/** * 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()); }