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