예제 #1
0
 /**
  * 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']);
 }
예제 #2
0
 /**
  * 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();
 }
예제 #3
0
 /**
  * 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'));
     }
 }
예제 #4
0
파일: Module.php 프로젝트: esase/dream-cms
 /**
  * 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);
     }
 }
예제 #5
0
 /**
  * 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);
     }
 }
예제 #6
0
파일: Module.php 프로젝트: esase/dream-cms
 /**
  * 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);
         }
     }
 }