public function indexAction() { $userId = $this->params()->fromRoute('userId', null); $token = $this->params()->fromRoute('token', null); try { $this->service->proceed($userId, $token); return $this->redirect()->toRoute('lang/my', array('action' => 'password')); } catch (Exception\TokenExpirationDateExpiredException $e) { $this->notification()->danger('Cannot proceed, token expired'); } catch (Exception\UserNotFoundException $e) { $this->notification()->danger('User cannot be found for specified token'); } catch (\Exception $e) { $this->logger->crit($e); $this->notification()->danger('An unexpected error has occurred, please contact your system administrator'); } return $this->redirect()->toRoute('lang/forgot-password'); }
public function testProceed() { $tokenHash = uniqid('tokenHash'); $expirationDate = new \DateTime(); $expirationDate->modify('+1 hour'); $token = new Token(); $token->setExpirationDate($expirationDate)->setHash($tokenHash); $expiredToken = new Token(); $expiredToken->setExpirationDate(new \DateTime('2014-01-01 00:00:00')); $expiredToken->setHash(uniqid('tokenHash')); $user = UserEntityProvider::createEntityWithRandomData(); $user->getTokens()->add($token); $user->getTokens()->add($expiredToken); $userId = $user->getId(); $this->userRepositoryMock->expects($this->once())->method('findOneBy')->with(array('id' => new \MongoId($userId), 'tokens.hash' => $tokenHash))->willReturn($user); $this->repositoryServiceMock->expects($this->once())->method('remove')->with($expiredToken); $this->authenticationServiceMock->expects($this->once())->method('getStorage')->willReturnSelf(); $this->authenticationServiceMock->expects($this->once())->method('write')->with($user->getId()); $this->testedObject->proceed($userId, $tokenHash); }