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]; }