Exemplo n.º 1
0
 /**
  * Index page
  */
 public function indexAction()
 {
     // get user info by api key
     if (null != ($apiKey = $this->getRequest()->getQuery()->api_key)) {
         if (null != ($userInfo = UserIdentityService::getUserInfo($apiKey, UserModelBase::USER_INFO_BY_API_KEY))) {
             // fill the user's info
             if ($userInfo['status'] == UserModelBase::STATUS_APPROVED) {
                 $userIdentity = [];
                 foreach ($userInfo as $fieldName => $value) {
                     $userIdentity[$fieldName] = $value;
                 }
                 // init user identity
                 UserIdentityService::setCurrentUserIdentity($userIdentity);
             }
         }
     }
     XmlRpcServerFault::attachFaultException('XmlRpc\\Exception\\XmlRpcActionDenied');
     $server = new XmlRpcServer();
     // get xmlrpc classes
     if (null != ($classes = $this->getModel()->getClasses())) {
         $server->sendArgumentsToAllMethods(false);
         foreach ($classes as $class) {
             $server->setClass($class['path'], $class['namespace'], $this->getServiceLocator());
         }
     }
     $server->handle();
     // disable layout and view script
     return $this->response;
 }
Exemplo n.º 2
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'));
     }
 }
Exemplo n.º 3
0
 /**
  * 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);
     }
 }
Exemplo n.º 4
0
 /**
  * Init acl
  *
  * @param integer $userRole
  */
 protected function initAcl($userRole)
 {
     // init user identity
     $userIdentity = [];
     $userIdentity['role'] = $userRole;
     $userIdentity['user_id'] = $this->userId;
     UserIdentityService::setCurrentUserIdentity($userIdentity);
     // init new AclZend
     $acl = new AclZend();
     $acl->addRole(new Role($userRole));
     AclService::setCurrentAcl($acl);
     // get acl resources
     if (null != ($resources = $this->aclModelBase->getAclResources($userIdentity['role'], $userIdentity['user_id']))) {
         // process acl resources
         $resourcesInfo = [];
         foreach ($resources as $resource) {
             // add new resource
             $acl->addResource(new Resource($resource['resource']));
             // add resource's action
             $resource['permission'] == AclModelBase::ACTION_ALLOWED ? $acl->allow($userIdentity['role'], $resource['resource']) : $acl->deny($userIdentity['role'], $resource['resource']);
             $resourcesInfo[$resource['resource']] = $resource;
         }
         AclService::setCurrentAclResources($resourcesInfo);
     }
 }
Exemplo n.º 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);
     }
 }