/** * 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; }
/** * 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 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); } }
/** * 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); } }