public function indexAction() { $this->_helper->page->doCanonicalRedirect('go'); //if logged in user trys to go to the login page - redirect him to the main page if (Tools_Security_Acl::isAllowed(Tools_Security_Acl::RESOURCE_PAGE_PROTECTED)) { $this->_redirect($this->_helper->website->getUrl()); } $loginForm = new Application_Form_Login(); if ($this->getRequest()->isPost()) { if ($loginForm->isValid($this->getRequest()->getParams())) { $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Registry::get('dbAdapter'), 'user', 'email', 'password', 'MD5(?)'); $authAdapter->setIdentity($loginForm->getValue('email')); $authAdapter->setCredential($loginForm->getValue('password')); $authResult = $authAdapter->authenticate(); if ($authResult->isValid()) { $authUserData = $authAdapter->getResultRowObject(null, 'password'); if (null !== $authUserData) { $user = new Application_Model_Models_User((array) $authUserData); $user->setLastLogin(date(Tools_System_Tools::DATE_MYSQL)); $user->setIpaddress($_SERVER['REMOTE_ADDR']); $this->_helper->session->setCurrentUser($user); Application_Model_Mappers_UserMapper::getInstance()->save($user); unset($user); $this->_helper->cache->clean(); if ($authUserData->role_id == Tools_Security_Acl::ROLE_MEMBER) { $this->_memberRedirect(); } if (isset($this->_helper->session->redirectUserTo)) { $this->_redirect($this->_helper->website->getUrl() . $this->_helper->session->redirectUserTo, array('exit' => true)); } $this->_redirect(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : $this->_helper->website->getUrl()); } } $signInType = $this->getRequest()->getParam('singintype'); if ($signInType && $signInType == Tools_Security_Acl::ROLE_MEMBER) { $this->_memberRedirect(false); } $this->_checkRedirect(false, array('email' => 'There is no user with such login and password.')); } else { $this->_checkRedirect(false, array('email' => 'Login should be a valid email address')); } } else { //getting available system translations $this->view->languages = $this->_helper->language->getLanguages(); //getting messages $errorMessages = $this->_helper->flashMessenger->getMessages(); if (!empty($errorMessages)) { foreach ($errorMessages as $message) { foreach ($message as $elementName => $msg) { $loginForm->getElement($elementName)->setAttribs(array('class' => 'notvalid', 'title' => $msg)); } } } $this->view->messages = $this->_helper->flashMessenger->getMessages(); //unset url redirect set from any login widget unset($this->_helper->session->redirectUserTo); $loginForm->removeDecorator('HtmlTag'); $loginForm->setElementDecorators(array('ViewHelper', 'Errors', 'Label', array('HtmlTag', array('tag' => 'p')))); $this->view->loginForm = $loginForm; } }