コード例 #1
0
ファイル: UserController.php プロジェクト: c12g/stratos-php
 /**
  * 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;
 }