public function indexAction() { $request = $this->getRequest(); if (!$request->isPost()) { return array('query' => $this->params()->fromQuery()); } $item = $request->getPost(); $form = new \User\Form\LoginForm(); $form->bind($item); if ($form->isValid()) { $callback = $this->params()->fromPost('callback'); $callback = $callback ? $callback : '/'; $item = $form->getData(); $itemModel = Api::_()->getModel('User\\Model\\Login'); $itemModel->setItem($item)->login(); $loginResult = $itemModel->getLoginResult(); if ($item['rememberMe']) { $tokenString = $itemModel->createToken(); //Cookie expired after 60 days $this->cookie()->crypt(false)->write('realm', $tokenString, 3600 * 24 * 60); } if ($loginResult->isValid()) { return $this->redirect()->toUrl($callback); } else { $this->flashMessenger()->setNamespace('login-result')->addMessage($loginResult); return $this->redirect()->toUrl('/login/'); } } else { $item = $form->getData(); } return array('form' => $form, 'item' => $item, 'query' => $this->params()->fromQuery()); }
/** * login action test */ public function testLoginAction() { $form = new \User\Form\LoginForm('form-login', ['serviceLocator' => $this->getApplicationServiceLocator()]); $userData = ['name' => 'User', 'email' => '*****@*****.**', 'password' => '123456']; $this->createUser($userData, \User\Entity\User::ROLE_USER); $postData = ['email' => $userData['email'], 'password' => $userData['password'], 'security' => $form->get('security')->getValue()]; $this->dispatch('/user/auth/login', 'POST', $postData); $this->assertResponseStatusCode(302); $this->assertRedirectTo('/'); }