guard($guard)->check()) { return redirect()->route('admin.session.create'); } /** * If user status is changed by admin. Then session should be * logged out. */ if (! (bool) auth()->guard($guard)->user()->status) { auth()->guard($guard)->logout(); session()->flash('error', __('admin::app.errors.401')); return redirect()->route('admin.session.create'); } /** * If somehow the user deleted all permissions, then it should be * auto logged out and need to contact the administrator again. */ if ($this->isPermissionsEmpty()) { auth()->guard($guard)->logout(); session()->flash('error', __('admin::app.errors.401')); return redirect()->route('admin.session.create'); } return $next($request); } /** * Check for user, if they have empty permissions or not except admin. * * @return bool */ public function isPermissionsEmpty() { if (! $role = auth()->guard('user')->user()->role) { abort(401, 'This action is unauthorized.'); } if ($role->permission_type === 'all') { return false; } if ($role->permission_type !== 'all' && empty($role->permissions)) { return true; } $this->checkIfAuthorized(); return false; } /** * Check authorization. * * @return null */ public function checkIfAuthorized() { $roles = acl()->getRoles(); if (isset($roles[Route::currentRouteName()])) { bouncer()->allow($roles[Route::currentRouteName()]); } } }