user()) { return $next($request); } $access = app(PortalProfileAccess::class); $available = $access->governanceAvailable(); if ((config('portal.profile_access_enabled') || config('portal.profile_administration_enabled')) && ! $available) { $recovery = $request->is('management/profile-install', 'management/profile-install/bootstrap') || ($request->is('logout') && $request->isMethod('POST')); abort_if(! in_array($request->method(), ['GET', 'HEAD', 'OPTIONS'], true) && ! $recovery, 503, 'Autorizações indisponíveis: recuperar a consistência dos perfis antes de gravar. Pode terminar a sessão ou consultar o instalador.'); } if ($available) { $revision = (int) DB::table('users')->where('id', $request->user()->id)->value('portal_access_revision'); $bound = $request->session()->get('portal.access_revision'); if (($bound === null && $revision > 0) || ($bound !== null && (int) $bound !== $revision)) { Auth::guard('web')->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); return $request->expectsJson() ? response()->json(['message' => 'A autorização foi alterada. Inicie uma nova sessão.'], 401) : redirect('/login')->withErrors(['email' => 'A autorização foi alterada. Inicie uma nova sessão.']); } $request->session()->put('portal.access_revision', $revision); } return $next($request); } }