/**
  * If a User already exists with the same email or phone number but
  * that it was never enabled, we delete that previous user (this case
  * may happen if the user stop the registration process before sending
  * the validation code and then change phone etc.).
  * However to not confuse user, we keep the same confirmation token.
  *
  * @param User $user User to check the existence of
  *
  * @return string|null
  */
 public function deleteIfNonEnabledExists(User $user)
 {
     $email = $user->getEmail();
     $inDatabaseUser = null;
     if (!is_null($email)) {
         $inDatabaseUser = $this->findUserByUsernameOrEmail($email);
     }
     $phoneNumber = $user->getPhoneNumber();
     if (is_null($inDatabaseUser) && !is_null($phoneNumber)) {
         $phoneNumber = $this->normalizePhone($phoneNumber);
         $inDatabaseUser = $this->repository->findOneByPhoneNumber($phoneNumber);
     }
     $token = null;
     if (!is_null($inDatabaseUser) && !$inDatabaseUser->isEnabled()) {
         $token = $inDatabaseUser->getConfirmationToken();
         $this->deleteUser($inDatabaseUser);
     }
     return $token;
 }
 /**
  * Used for a user to resend his confirmation token.
  *
  * @param User    $user    the user who's reseting password
  * @param Request $request
  *
  * @Annotations\Patch("/users/{id}/resend-confirmation-token")
  */
 public function patchUserResendConfirmationTokenAction(User $user)
 {
     $this->sendToken($user->getEmail(), $user->getPhoneNumber(), $user->getConfirmationToken());
     return $this->handleView(new View());
 }