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;
     }
 }