Exemple #1
0
 /**
  * Get widget content
  *
  * @return string|boolean
  */
 public function getContent()
 {
     if (UserIdentityService::isGuest()) {
         // get a login form
         $loginForm = $this->getServiceLocator()->get('Application\\Form\\FormManager')->getInstance('User\\Form\\UserLogin');
         if ($this->getRequest()->isPost() && $this->getRequest()->getPost('form_name') == $loginForm->getFormName()) {
             // fill form with received values
             $loginForm->getForm()->setData($this->getRequest()->getPost());
             if ($loginForm->getForm()->isValid()) {
                 $userName = $this->getRequest()->getPost('nickname');
                 $password = $this->getRequest()->getPost('password');
                 // check an authentication
                 $authErrors = [];
                 $result = UserAuthenticateUtility::isAuthenticateDataValid($userName, $password, $authErrors);
                 if (false === $result) {
                     $this->getFlashMessenger()->setNamespace('error');
                     // add auth error messages
                     foreach ($authErrors as $message) {
                         $this->getFlashMessenger()->addMessage($this->translate($message));
                     }
                     return $this->reloadPage();
                 }
                 $rememberMe = null != ($remember = $this->getRequest()->getPost('remember')) ? true : false;
                 return $this->loginUser($result['user_id'], $result['nick_name'], $rememberMe);
             }
         }
         return $this->getView()->partial('user/widget/login', ['login_form' => $loginForm->getForm()]);
     }
     return false;
 }
 /**
  * Login user
  *
  * @param integer $userId
  * @param string $nickName
  * @param boolean $rememberMe
  * @return string
  */
 protected function loginUser($userId, $nickName, $rememberMe = false)
 {
     UserAuthenticateUtility::loginUser($userId, $nickName, $rememberMe);
     if (null !== ($backUrl = $this->getRequest()->getQuery('back_url', null))) {
         return $this->redirectToUrl($backUrl);
     }
     // check the user's dashboard url
     $userDashboard = $this->getView()->pageUrl('dashboard');
     return false !== $userDashboard ? $this->redirectTo(['page_name' => $userDashboard]) : $this->redirectTo();
     // redirect to home page
 }
 /**
  * Index page
  */
 public function indexAction()
 {
     if (!UserIdentityService::isGuest()) {
         return $this->createHttpNotFoundModel($this->getResponse());
     }
     $this->layout($this->layout);
     $loginForm = $this->getServiceLocator()->get('Application\\Form\\FormManager')->getInstance('User\\Form\\UserLogin');
     if ($this->getRequest()->isPost()) {
         // fill form with received values
         $loginForm->getForm()->setData($this->getRequest()->getPost());
         if ($loginForm->getForm()->isValid()) {
             $userName = $this->getRequest()->getPost('nickname');
             $password = $this->getRequest()->getPost('password');
             // check an authentication
             $authErrors = [];
             $result = UserAuthenticateUtility::isAuthenticateDataValid($userName, $password, $authErrors);
             if (false === $result) {
                 $this->flashMessenger()->setNamespace('error');
                 // add auth error messages
                 foreach ($authErrors as $message) {
                     $this->flashMessenger()->addMessage($this->getTranslator()->translate($message));
                 }
                 return $this->reloadPage();
             }
             $rememberMe = null != ($remember = $this->getRequest()->getPost('remember')) ? true : false;
             // login a user
             UserAuthenticateUtility::loginUser($result['user_id'], $result['nick_name'], $rememberMe);
             // make a redirect
             if (null !== ($backUrl = $this->getRequest()->getQuery('back_url', null))) {
                 return $this->redirect()->toUrl($backUrl);
             }
             // search a first allowed admin page
             $adminMenu = $this->getAdminMenuModel()->getMenu();
             foreach ($adminMenu as $menuItems) {
                 foreach ($menuItems['items'] as $item) {
                     if (AclService::checkPermission($item['controller'] . ' ' . $item['action'], false)) {
                         return $this->redirectTo($item['controller'], $item['action']);
                     }
                 }
             }
             // redirect to the public home page
             $this->flashMessenger()->setNamespace('error');
             $this->flashMessenger()->addMessage($this->getTranslator()->translate('There are no admin pages allowed for you!'));
             return $this->redirectTo('page', 'index', [], false, [], 'page');
         }
     }
     return new ViewModel(['login_form' => $loginForm->getForm()]);
 }