public function loginAction()
 {
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $this->_redirect($this->getUrl());
     }
     $request = $this->getRequest();
     $redirect = $request->getPost('redirect');
     if (strlen($redirect) == 0) {
         $redirect = $request->getServer('REQUEST_URI');
     }
     if (strlen($redirect) == 0) {
         $redirect = $this->getUrl();
     }
     $errors = array();
     if ($request->isPost()) {
         $username = $request->getPost('username');
         $password = $request->getPost('password');
         if (strlen($username) == 0) {
             $errors['username'] = '******';
         }
         if (strlen($password) == 0) {
             $errors['password'] = '******';
         }
         if (count($errors) == 0) {
             $adapter = new Zend_Auth_Adapter_DbTable($this->db, 'users', 'username', 'password', 'md5(?)');
             $adapter->setIdentity($username);
             $adapter->setCredential($password);
             $result = $auth->authenticate($adapter);
             if ($result->isValid()) {
                 $user = new DatabaseObject_User($this->db);
                 $user->load($adapter->getResultRowObject()->user_id);
                 $user->loginSuccess();
                 $seconds = (int) $request->getPost('expires');
                 if ($seconds > 0) {
                     $auth->getStorage()->setExpirationSeconds($seconds);
                 }
                 $identity = $user->createAuthIdentity();
                 $auth->getStorage()->write($identity);
                 $this->_redirect($redirect);
             }
             DatabaseObject_User::LoginFailure($username, $result->getCode());
             $errors['username'] = '******';
         }
     }
     $this->breadcrumbs->addStep('Login');
     $this->view->errors = $errors;
     $this->view->redirect = $redirect;
 }