public function loginAction() { $request = $this->getRequest(); if ($request->isXmlHttpRequest()) { $this->_helper->layout()->disableLayout(); $this->view->block_redirect = '/auth/login/msg/' . $request->getParam('msg', ''); } else { $ip = $this->_helper->currentip(); $form = new Logic_User_Form_Login(); $this->view->form = $form; $identity = Zend_Auth::getInstance()->getIdentity(); if (is_null($identity)) { $layout = Zend_Layout::getMvcInstance(); $layout->setLayout('_layouts/login'); } if (null !== ($identity = Zend_Auth::getInstance()->getIdentity())) { return $this->_redirect($identity->defaultAction); } if ($request->getParam('msg', false) == 'blocked') { $this->_helper->messenger('error', 'System blocked.'); } if ($request->isPost() and !strstr($_SERVER['SERVER_NAME'], 'szkolenia')) { if ($form->isValid($request->getPost())) { $values = $form->getValues(); $config = Zend_Registry::get('config'); switch ($config['auth']['method']) { case "LDAP": default: $adapter = new Logic_Auth_Adapter_Ldap(); break; case "DB": $user = new User(); $adapter = new Logic_Auth_Adapter_RemoteUserDbTable($user->getAdapter(), 'user', 'login', 'password', 'MD5(?)'); break; } $adapter->setIdentity($values['login'])->setCredential($values['password']); $auth = Zend_Auth::getInstance(); $result = $auth->authenticate($adapter); if (!$result->isValid() && $request->getParam('msg', false) != 'blocked') { switch ($result->getCode()) { case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID: case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND: $uzytkownik = new Logic_User(); $uzytkownik->failedLogin($values['login'], md5($values['password'])); $this->_helper->messenger('error', 'Error while logging in. Specified account doesnt exist or account is inactive.'); break; default: $this->_helper->messenger('error', 'Error while logging in.'); break; } } else { $storage = $auth->getStorage(); $storageRow = $auth->getIdentity(); $uzytkownik = new Logic_User(); $uzytkownik->login($values['login'], md5($values['password'])); $uriSessionCheck = new Zend_Session_Namespace('prevUri'); if (isset($uriSessionCheck->uri) && $uriSessionCheck->uri != '/' && $uriSessionCheck->uri != '') { $action = $uriSessionCheck->uri; Zend_Session::namespaceUnset('prevUri'); } else { $action = $uzytkownik->getDefaultAction(); $action = $action ? $action : '/'; } $userProfiles = $uzytkownik->getProfiles(Zend_Auth::getInstance()->getIdentity()->id); $userProfile = $userProfiles->current(); $action = $userProfile->landing; try { Logic_Client::getInstance(); } catch (Exception $exc) { $this->_helper->messenger('info', 'Brak ustawionego Klienta. Niektóre funkcjonalności nie będą dostępne.'); } $storageRow->defaultAction = $action; $storage->write($storageRow); Zend_Session::setOptions(array('remember_me_seconds' => 7200)); return $this->_redirect($action); } } } } }