Пример #1
0
 public function loginAction()
 {
     $form = new LoginForm();
     $form->get('submit')->setValue('Login');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $account = new Account();
         $form->setInputFilter($account->getLoginInputFilter());
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $account->exchangeArray($form->getData());
             $result = $this->authenticate($account);
             switch ($result) {
                 case AUTH_RESULT::NOT_FOUND:
                     return ['form' => $form, 'errors' => $errors = ['name' => 'name_not_available']];
                 case AUTH_RESULT::WRONG_CREDENTIALS:
                     return ['form' => $form, 'errors' => $errors = ['password' => 'wrong_password']];
                 case AUTH_RESULT::NOT_CONFIRMED:
                     return ['form' => $form, 'errors' => $errors = ['name' => 'not_confirmed']];
                 case AUTH_RESULT::SUCCESS:
                     $account = $this->getAccountTable()->getAccountBy(['name' => $account->getName()]);
                     SessionService::createUserSession($account);
                     return $this->redirect()->toRoute('account', ['action' => 'profile']);
             }
         } else {
             $errors = $form->getMessages();
             return ['form' => $form, 'errors' => $errors];
         }
     }
     return ['form' => $form];
 }