diff --git a/app/Http/Middleware/CheckUserPermission.php b/app/Http/Middleware/CheckUserPermission.php new file mode 100644 index 0000000..b6cbf47 --- /dev/null +++ b/app/Http/Middleware/CheckUserPermission.php @@ -0,0 +1,67 @@ +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 + } +}