/**
  * Add a trusted computer token for a user.
  *
  * @param mixed     $user
  * @param string    $token
  * @param \DateTime $validUntil
  */
 public function addTrustedComputer($user, $token, \DateTime $validUntil)
 {
     if ($user instanceof TrustedComputerInterface) {
         $user->addTrustedComputer($token, $validUntil);
         $this->persister->persist($user);
     }
 }
 /**
  * Generate a new authentication code an send it to the user.
  *
  * @param TwoFactorInterface $user
  */
 public function generateAndSend(TwoFactorInterface $user)
 {
     $min = pow(10, $this->digits - 1);
     $max = pow(10, $this->digits) - 1;
     $code = $this->generateCode($min, $max);
     $user->setEmailAuthCode($code);
     $this->persister->persist($user);
     $this->mailer->sendAuthCode($user);
 }
 /**
  * Check if code is a valid backup code
  *
  * @param  \Scheb\TwoFactorBundle\Model\BackupCodeInterface $user
  * @param  string                                           $code
  * @return bool
  */
 public function checkCode(BackupCodeInterface $user, $code)
 {
     if ($user->isBackupCode($code)) {
         $user->invalidateBackupCode($code);
         $this->persister->persist($user);
         return true;
     }
     return false;
 }
 /**
  * Create a cookie for trusted computer.
  *
  * @param TrustedComputerInterface $user
  * @param Request                  $request
  *
  * @return Cookie
  */
 public function createTrustedCookie(Request $request, TrustedComputerInterface $user)
 {
     $tokenList = $request->cookies->get($this->cookieName, null);
     // Generate new token
     $token = $this->tokenGenerator->generateToken(32);
     $tokenList .= ($tokenList !== null ? ';' : '') . $token;
     $validUntil = $this->getDateTimeNow()->add(new \DateInterval('PT' . $this->cookieLifetime . 'S'));
     // Add token to user entity
     $user->addTrustedComputer($token, $validUntil);
     $this->persister->persist($user);
     // Create cookie
     return new Cookie($this->cookieName, $tokenList, $validUntil, '/');
 }
 /**
  * Resets an authentication code an persist it
  *
  * @param \Scheb\TwoFactorBundle\Model\InWebo\TwoFactorInterface $user
  */
 public function resetAndPersist(TwoFactorInterface $user)
 {
     $user->setInWeboAuthenticatorSecret(null);
     $this->persister->persist($user);
 }