Example #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']);
 }
Example #2
0
 /**
  * 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'));
     });
 }
Example #3
0
 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();
 }
Example #5
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'));
     }
 }
Example #6
0
 /**
  * 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;
 }
Example #7
0
 /**
  * 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;
 }
Example #8
0
 /**
  * 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;
 }
Example #9
0
 /**
  * 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;
 }
Example #10
0
 /**
  * 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));
 }
Example #11
0
 /**
  * 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;
 }