/** * Present a login form and handle user authentication. */ public function loginAction() { /* * Build the login form */ $form = new Zend_Form(); $form->setMethod('post'); $username = $form->createElement('text', 'username'); $username->setLabel($this->view->translate->_('Username')); $username->setRequired(true); $username->addValidator('alnum'); $password = $form->createElement('password', 'password'); $password->setLabel($this->view->translate->_('Password')); $password->setRequired(true); $form->addElement($username); $form->addElement($password); $form->addElement('submit', 'login', array('label' => $this->view->translate->_('Login'))); /* * Handle authentication */ if ($this->getRequest()->isPost()) { $formData = $this->getRequest()->getPost(); if ($form->isValid($formData)) { try { Model_DbTable_User::authenticate($form->getValue('username'), $form->getValue('password')); /* * Set the current user session */ $user = Model_DbTable_User::findByUsername($form->getValue('username')); $currentUser = new Zend_Session_Namespace('currentUser'); $currentUser->id = $user->id; $currentUser->username = $user->username; $currentUser->apiKey = $user->apiKey; $currentUser->language = $user->language; $currentUser->skin = $user->skin; $currentUser->isAdmin = $user->isAdmin; /* * Redirect back to the index page. */ $this->_helper->_redirector->goToRouteAndExit(array('controller' => 'index', 'action' => 'index')); } catch (Exception $e) { $this->view->errorMessage = $this->view->translate->_('Login failed.') . ' ' . $e->getMessage(); } } else { $this->view->errorMessage = $this->view->translate->_('Login failed.') . ' ' . $this->view->translate->_('Please completely fill out the login form.'); $form->populate($formData); } } $this->view->headTitle($this->view->translate->_('Login')); $this->view->form = $form; }