/** * Logout user * * @param array $userIdentity * @return void */ protected function logoutUser(array $userIdentity) { // clear logged user's identity UserIdentityService::getAuthService()->clearIdentity(); // skip a remember me time $this->getServiceLocator()->get('Zend\\Session\\SessionManager')->rememberMe(0); // fire the user logout event UserEvent::fireLogoutEvent($userIdentity['user_id'], $userIdentity['nick_name']); }
/** * Logout */ public function ajaxLogoutAction() { $request = $this->getRequest(); if ($this->isGuest() || !$request->isPost()) { return $this->createHttpNotFoundModel($this->getResponse()); } // clear logged user's identity $user = UserIdentityService::getCurrentUserIdentity(); UserIdentityService::getAuthService()->clearIdentity(); $this->serviceLocator->get('Zend\\Session\\SessionManager')->rememberMe(0); // fire the user logout event UserEvent::fireLogoutEvent($user['user_id'], $user['nick_name']); return $this->getResponse(); }
/** * Login user * * @param integer $userId * @param string $nickName * @param boolean $rememberMe * @return void */ public static function loginUser($userId, $nickName, $rememberMe) { $user = []; $user['user_id'] = $userId; // save user id UserIdentityService::getAuthService()->getStorage()->write($user); UserIdentityService::setCurrentUserIdentity(UserIdentityService::getUserInfo($userId)); AclService::clearCurrentAcl(); // fire the user login event UserEvent::fireLoginEvent($userId, $nickName); if ($rememberMe) { ServiceLocatorService::getServiceLocator()->get('Zend\\Session\\SessionManager')->rememberMe((int) SettingService::getSetting('user_session_time')); } }
/** * Set user's language * * @param string $language * @return void */ protected function setUserLanguage($language) { if (!$this->userIdentity['language'] || $this->userIdentity['language'] != $language) { // save language if ($this->userIdentity['role'] != AclBaseModel::DEFAULT_ROLE_GUEST) { $this->serviceLocator->get('Application\\Model\\ModelManager')->getInstance('User\\Model\\UserBase')->setUserLanguage($this->userIdentity['user_id'], $language); } // set language cookie $header = new SetCookie(); $header->setName(self::LOCALIZATION_COOKIE)->setValue($language)->setPath('/')->setExpires(time() + (int) SettingService::getSetting('application_localization_cookie_time')); $this->serviceLocator->get('Response')->getHeaders()->addHeader($header); $this->userIdentity['language'] = $language; // change globally user's identity UserIdentityService::setCurrentUserIdentity($this->userIdentity); UserIdentityService::getAuthService()->getStorage()->write($this->userIdentity); } }
/** * Init identity */ protected function initUserIdentity() { try { $authService = UserIdentityService::getAuthService(); // set identity as a site guest if (!$authService->hasIdentity()) { $this->initGuestIdentity($authService); } else { $this->userIdentity = $authService->getIdentity(); // get extended user info if ($authService->getIdentity()['user_id'] != UserBaseModel::DEFAULT_GUEST_ID) { $user = $this->serviceLocator->get('Application\\Model\\ModelManager')->getInstance('User\\Model\\UserBase'); // get user info $userInfo = $user->getUserInfo($authService->getIdentity()['user_id']); if ($userInfo && $userInfo['status'] == UserBaseModel::STATUS_APPROVED) { // fill the user identity with data foreach ($userInfo as $fieldName => $value) { $this->userIdentity[$fieldName] = $value; } } else { // user not found, set the current user as a site guest $this->initGuestIdentity($authService); } } } // set the user identity UserIdentityService::setCurrentUserIdentity($this->userIdentity); } catch (Exception $e) { ApplicationErrorLogger::log($e); } }
/** * Init session * * @return void */ protected function initSession() { try { $session = $this->serviceLocator->get('Zend\\Session\\SessionManager'); $session->start(); $container = new SessionContainer('initialized'); // init a new session if (!isset($container->init)) { $session->regenerateId(true); $container->init = 1; } // validate the session $config = $this->serviceLocator->get('Config'); if (!empty($config['session']['validators'])) { $chain = $session->getValidatorChain(); foreach ($config['session']['validators'] as $validator) { $chain->attach('session.validate', [new $validator(), 'isValid']); } } } catch (Exception $e) { ApplicationErrorLogger::log($e); UserIdentityService::getAuthService()->clearIdentity(); if ($session) { $session->rememberMe(0); } } }