route()->getPrefix()); $moduleName = end($moduleName) ?? null; if ($moduleName) { if (array_key_exists($moduleName, UserContext::getUserAppPermissions()) !== false) { if (in_array($userPermissions[$moduleName], $accessRoles)) { return $next($request); } // else { // return redirect('/menu'); // #Гаврилов // //РЕДИРЕКТ НА СТРАНИЦУ 403 // } } // else { // return redirect('/menu'); // #Гаврилов // //РЕДИРЕКТ НА СТРАНИЦУ 403 // //redirect(); // } } // else { // return redirect('/menu'); // #Гаврилов // //КУДА РЕДИРЕКТИТЬ или что возвращать, если имя модуля не определено? // } //Если ошибка при обращении к api ендпоинту if ($request->expectsJson()) { return response()->json(['message' => "Ошибка! Функционал недоступен для вашей роли"], 403); //Если ошибка при обращении к web роуту } else { #Гаврилов //ЕСЛИ ВЫЗЫВАЕТСЯ WEB РОУТ НЕ С ФРОНТА, ТО ПРОИСХОДИТ РЕДИРЕКТ БЕЗ УКАЗАНИЯ ТЕКСТА ОШИБКИ. нАПРИМЕР, ПРИ РЕДИРЕКТЕ НИЖЕ НА СТРАНИЦУ МЕНЮ, ПОЛЬЗОВАТЕЛЬ НЕ УВИДИТ НИКАКОГО ОПОВЕЩЕНИЯ ОБ ОШИБКЕ. //ЭТУ ПРОБЛЕМУ Я ИСПРАВЛЯЛ, ЧЕРЕЗ ГЕНЕРАЦИЮ НОТИФИКАЦИЙ НА БЭКЕ И ДОБАВЛЕНИЯ ИХ В ОПРЕДЕЛЕННУЮ ОЧЕРЕДЬ REDIS, КОТОРУЮ ЧИТАЕТ КАЖДАЯ СТРАНИЦА ПРИ ПЕРВИЧНОМ РЕНДЕРИНГЕ. НАДО ПОСМОТРЕТЬ ГДЕ Я УЖЕ ТАКОЕ РЕАЛИЗОВЫВАЛ return redirect('/menu'); } #Гаврилов //РЕДИРЕКТ НА СТРАНИЦУ 403 } }