get('isLoggedIn')) { return; } // Проверяем remember-токен $userId = Auth::checkRememberToken(); if ($userId !== null) { // Токен найден и валиден — восстанавливаем сессию $userModel = new UserModel(); $user = $userModel->find($userId); if ($user && $user['email_verified']) { $orgUserModel = new OrganizationUserModel(); $userOrgs = $orgUserModel->where('user_id', $user['id'])->findAll(); if (!empty($userOrgs)) { // Восстанавливаем данные сессии $sessionData = [ 'user_id' => $user['id'], 'email' => $user['email'], 'name' => $user['name'], 'isLoggedIn' => true, ]; // Выбираем организацию если она была if (count($userOrgs) === 1) { $sessionData['active_org_id'] = $userOrgs[0]['organization_id']; } $session->set($sessionData); log_message('info', "User {$user['email']} logged in via remember token"); return; } } // Токен недействителен — удаляем его $response = service('response'); $response->deleteCookie('remember_selector'); $response->deleteCookie('remember_token'); } // Пользователь не авторизован — редирект на логин return redirect()->to('/login'); } /** * Обработка после выполнения запроса * * @param RequestInterface $request * @param ResponseInterface $response * @param array|null $arguments * @return void */ public function after(RequestInterface $request, ResponseInterface $response, $arguments = null): void { // Ничего не делаем после запроса } }