diff --git a/app/Http/Middleware/CheckUserAppAccess.php b/app/Http/Middleware/CheckUserAppAccess.php new file mode 100644 index 0000000..11af61c --- /dev/null +++ b/app/Http/Middleware/CheckUserAppAccess.php @@ -0,0 +1,43 @@ +route()->getPrefix()); + $moduleName = end($moduleName) ?? null; + if ($moduleName) { + if (array_key_exists($moduleName, UserContext::getUserAppPermissions()) !== false) { + return $next($request); + } + } + //Если ошибка при обращении к api ендпоинту + if ($request->expectsJson()) { + return response()->json(['message' => "Ошибка! Приложение недоступно"], 403); + //Если ошибка при обращении к web роуту + } else { + #Гаврилов + //ЕСЛИ ВЫЗЫВАЕТСЯ WEB РОУТ НЕ С ФРОНТА, ТО ПРОИСХОДИТ РЕДИРЕКТ БЕЗ УКАЗАНИЯ ТЕКСТА ОШИБКИ. нАПРИМЕР, ПРИ РЕДИРЕКТЕ НИЖЕ НА СТРАНИЦУ МЕНЮ, ПОЛЬЗОВАТЕЛЬ НЕ УВИДИТ НИКАКОГО ОПОВЕЩЕНИЯ ОБ ОШИБКЕ + //ЭТУ ПРОБЛЕМУ Я ИСПРАВЛЯЛ, ЧЕРЕЗ ГЕНЕРАЦИЮ НОТИФИКАЦИЙ НА БЭКЕ И ДОБАВЛЕНИЯ ИХ В ОПРЕДЕЛЕННУЮ ОЧЕРЕДЬ REDIS, КОТОРУЮ ЧИТАЕТ КАЖДАЯ СТРАНИЦА ПРИ ПЕРВИЧНОМ РЕНДЕРИНГЕ. НАДО ПОСМОТРЕТЬ ГДЕ Я УЖЕ ТАКОЕ РЕАЛИЗОВЫВАЛ + return redirect('/menu'); + } + } +}