/** * 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']); }
/** * Init */ public function init(ModuleManagerInterface $moduleManager) { // delete the user's files and dirs $eventManager = UserEvent::getEventManager(); $eventManager->attach(UserEvent::DELETE, function ($e) use($moduleManager) { // get a model instance $model = $moduleManager->getEvent()->getParam('ServiceManager')->get('Application\\Model\\ModelManager')->getInstance('FileManager\\Model\\FileManagerBase')->deleteUserHomeDirectory($e->getParam('object_id')); }); }
public function getServiceConfig() { return ['factories' => [__NAMESPACE__ . '/Service/' . __NAMESPACE__ . 'Service' => function ($serviceManager) { $service = new Service\UserService(); return $service->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Repository/' . __NAMESPACE__ . 'Repository' => function ($serviceManager) { $repository = new Repository\UserRepository(); return $repository->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Event/' . __NAMESPACE__ . 'Event' => function ($serviceManager) { $event = new Event\UserEvent(); return $event->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Listener/' . __NAMESPACE__ . 'Listener' => function ($serviceManager) { $listener = new Listener\UserListener(); return $listener->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Administrator/Service/AdministratorService' => function ($serviceManager) { $service = new Administrator\Service\AdministratorService(); return $service->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Administrator/Repository/AdministratorRepository' => function ($serviceManager) { $repository = new Administrator\Repository\AdministratorRepository(); return $repository->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Administrator/Event/AdministratorEvent' => function ($serviceManager) { $event = new Administrator\Event\AdministratorEvent(); return $event->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Administrator/Listener/AdministratorListener' => function ($serviceManager) { $listener = new Administrator\Listener\AdministratorListener(); return $listener->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Avatar/Service/AvatarService' => function ($serviceManager) { $service = new Avatar\Service\AvatarService(); return $service->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Avatar/Repository/AvatarRepository' => function ($serviceManager) { $repository = new Avatar\Repository\AvatarRepository(); return $repository->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Avatar/Event/AvatarEvent' => function ($serviceManager) { $event = new Avatar\Event\AvatarEvent(); return $event->setServiceManager($serviceManager); }, __NAMESPACE__ . '/Avatar/Listener/AvatarListener' => function ($serviceManager) { $listener = new Avatar\Listener\AvatarListener(); return $listener->setServiceManager($serviceManager); }]]; }
/** * 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')); } }
/** * Get widget content * * @return string|boolean */ public function getContent() { // check a permission if (AclService::checkPermission('users_view_profile')) { // get the current user's info if (null != ($userInfo = $this->getModel()->getUserInfo($this->getSlug(), UserWidgetModel::USER_INFO_BY_SLUG))) { $viewerNickName = !UserIdentityService::isGuest() ? UserIdentityService::getCurrentUserIdentity()['nick_name'] : null; // fire the get user's info event UserEvent::fireGetUserInfoEvent($userInfo['user_id'], $userInfo['nick_name'], UserIdentityService::getCurrentUserIdentity()['user_id'], $viewerNickName); // breadcrumb $this->getView()->pageBreadcrumb()->setCurrentPageTitle($userInfo['nick_name']); $this->getView()->headMeta()->setName('description', $userInfo['nick_name']); return $this->getView()->partial('user/widget/info', ['user' => $userInfo]); } } return false; }
/** * Set user time zone * * @param integer $userId * @param string $userName * @param integer $timeZoneId * @return boolean|string */ public function setUserTimeZone($userId, $userName, $timeZoneId) { try { $this->adapter->getDriver()->getConnection()->beginTransaction(); $update = $this->update()->table('user_list')->set(['time_zone' => $timeZoneId, 'date_edited' => date('Y-m-d')])->where(['user_id' => $userId]); $statement = $this->prepareStatementForSqlObject($update); $statement->execute(); // remove user cache $this->removeUserCache($userId); $this->adapter->getDriver()->getConnection()->commit(); } catch (Exception $e) { $this->adapter->getDriver()->getConnection()->rollback(); ApplicationErrorLogger::log($e); return $e->getMessage(); } // fire set user's time zone via XmlRpc event UserEvent::fireSetTimezoneViaXmlRpcEvent($userId, $userName); return true; }
/** * Select layout * * @param integer $layoutId * @param integer $userId * @return boolean|string */ public function selectLayout($layoutId, $userId) { try { $this->adapter->getDriver()->getConnection()->beginTransaction(); $update = $this->update()->table('user_list')->set(['layout' => $layoutId])->where(['user_id' => $userId]); $statement = $this->prepareStatementForSqlObject($update); $statement->execute(); // clear a cache $this->removeUserCache($userId); $this->adapter->getDriver()->getConnection()->commit(); } catch (Exception $e) { $this->adapter->getDriver()->getConnection()->rollback(); ApplicationErrorLogger::log($e); return $e->getMessage(); } // fire the edit user event UserEvent::fireUserEditEvent($userId, true); return true; }
/** * Generate a new activation code * * @param array $userInfo * @return boolean|string */ public function generateActivationCode(array $userInfo) { try { $this->adapter->getDriver()->getConnection()->beginTransaction(); $activationCode = $this->generateRandString(); $update = $this->update()->table('user_list')->set(['activation_code' => $activationCode, 'date_edited' => date('Y-m-d')])->where(['user_id' => $userInfo['user_id']]); $statement = $this->prepareStatementForSqlObject($update); $statement->execute(); // clear a cache $this->removeUserCache($userInfo['user_id']); $this->adapter->getDriver()->getConnection()->commit(); } catch (Exception $e) { $this->adapter->getDriver()->getConnection()->rollback(); ApplicationErrorLogger::log($e); return $e->getMessage(); } // fire the user password reset request event UserEvent::fireUserPasswordResetRequestEvent($userInfo['user_id'], $userInfo, $activationCode); return true; }
/** * Test delete user home directory */ public function testDeleteUserHomeDirectory() { // test user data $data = ['nick_name' => Rand::getString(32), 'email' => Rand::getString(32), 'api_key' => Rand::getString(32), 'role' => AclModelBase::DEFAULT_ROLE_MEMBER, 'language' => null]; // create a test user $query = $this->userModel->insert()->into('user_list')->values($data); $statement = $this->userModel->prepareStatementForSqlObject($query); $statement->execute(); $testUserId = $this->userModel->getAdapter()->getDriver()->getLastGeneratedValue(); // create a test user's home directory $homeUserDirectory = FileManagerBaseModel::getUserBaseFilesDir($testUserId) . '/' . FileManagerBaseModel::getHomeDirectoryName(); FileSystemUtility::createDir($homeUserDirectory); // fire the delete user event UserEvent::fireUserDeleteEvent($testUserId, $data); // delete the created user $query = $this->userModel->delete()->from('user_list')->where(['user_id' => $testUserId]); $statement = $this->userModel->prepareStatementForSqlObject($query); $statement->execute(); // home directory must be deleted $this->assertFalse(file_exists($homeUserDirectory)); }
/** * Edit the user's role * * @param integer $userId * @param integer $roleId * @param string $roleName * @param array $userInfo * string language * string email * string nick_name * integer user_id * @param boolean $isSystem * @return boolean|string */ public function editUserRole($userId, $roleId, $roleName, array $userInfo, $isSystem = false) { try { $this->adapter->getDriver()->getConnection()->beginTransaction(); $update = $this->update()->table('user_list')->set(['role' => $roleId, 'date_edited' => date('Y-m-d')])->where(['user_id' => $userId])->where([new NotInPredicate('user_id', [self::DEFAULT_USER_ID])]); $statement = $this->prepareStatementForSqlObject($update); $statement->execute(); // clear a cache $this->removeUserCache($userId); $this->adapter->getDriver()->getConnection()->commit(); } catch (Exception $e) { $this->adapter->getDriver()->getConnection()->rollback(); ApplicationErrorLogger::log($e); return $e->getMessage(); } // fire the edit user role event UserEvent::fireEditRoleEvent($userInfo, $roleName, $isSystem); return true; }