Files
magic-project/app/Http/Middleware/CheckUserAppAccess.php
T

40 lines
1.6 KiB
PHP

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use App\Facades\UserContext;
/**
* Посредник проверки доступа пользователя к приложению
*/
class CheckUserAppAccess
{
/**
* Handle an incoming request.
*
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
*/
public function handle(Request $request, Closure $next): Response
{
$moduleName = explode('/', $request->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 РОУТ НЕ С ФРОНТА, ТО ПРОИСХОДИТ РЕДИРЕКТ БЕЗ УКАЗАНИЯ ТЕКСТА ОШИБКИ. нАПРИМЕР, ПРИ РЕДИРЕКТЕ НИЖЕ НА СТРАНИЦУ МЕНЮ, ПОЛЬЗОВАТЕЛЬ НЕ УВИДИТ НИКАКОГО ОПОВЕЩЕНИЯ ОБ ОШИБКЕ.
return redirect('/menu');
}
}
}