public function loginAction()
 {
     require_once 'Zend/Auth/Adapter/DbTable.php';
     $request = $this->getRequest();
     $validateOnly = $request->isXmlHttpRequest();
     $userObj = new User();
     $userRow = $userObj->createRow();
     if ($validateOnly) {
         $this->setNoRenderer();
     }
     $status = ValidationContainer::instance();
     if ($request->isPost()) {
         // if a user's already logged in, send them to their account home page
         $auth = Zend_Auth::getInstance();
         if ($auth->hasIdentity()) {
             #				$this->_redirect ( 'select/select' );
         }
         $request = $this->getRequest();
         // determine the page the user was originally trying to request
         $redirect = $this->_getParam('redirect');
         //if (strlen($redirect) == 0)
         //    $redirect = $request->getServer('REQUEST_URI');
         if (strlen($redirect) == 0) {
             if ($this->hasACL('pre_service')) {
                 #					$redirect = 'select/select';
             }
         }
         // initialize errors
         $status = ValidationContainer::instance();
         // process login if request method is post
         if ($request->isPost()) {
             // fetch login details from form and validate them
             $username = $this->getSanParam('username');
             $password = $this->_getParam('password');
             if (!$status->checkRequired($this, 'username', t('Login')) or !$this->_getParam('send_email') and !$status->checkRequired($this, 'password', t('Password'))) {
                 $status->setStatusMessage(t('The system could not log you in.'));
             }
             if (!$status->hasError()) {
                 // setup the authentication adapter
                 $db = Zend_Db_Table_Abstract::getDefaultAdapter();
                 $adapter = new Zend_Auth_Adapter_DbTable($db, 'user', 'username', 'password', 'md5(?)');
                 $adapter->setIdentity($username);
                 $adapter->setCredential($password);
                 // try and authenticate the user
                 $result = $auth->authenticate($adapter);
                 if ($result->isValid()) {
                     $user = new User();
                     $userRow = $user->find($adapter->getResultRowObject()->id)->current();
                     if ($user->hasPS($userRow->id)) {
                         $redirect = $redirect ? $redirect : "select/select";
                     }
                     if ($userRow->is_blocked) {
                         $status->setStatusMessage(t('That user account has been disabled.'));
                         $auth->clearIdentity();
                     } else {
                         // create identity data and write it to session
                         $identity = $user->createAuthIdentity($userRow);
                         $auth->getStorage()->write($identity);
                         // record login attempt
                         $user->recordLogin($userRow);
                         // send user to page they originally request
                         $this->_redirect($redirect);
                     }
                 } else {
                     $auth->clearIdentity();
                     switch ($result->getCode()) {
                         case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
                             $status->setStatusMessage(t('That username or password is invalid.'));
                             break;
                         case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
                             $status->setStatusMessage(t('That username or password is invalid.'));
                             break;
                         default:
                             throw new exception('login failure');
                             break;
                     }
                 }
             }
         }
     }
     if ($validateOnly) {
         $this->sendData($status);
     } else {
         $this->view->assign('status', $status);
     }
 }