public async Task <AuthenticationResponseModel> ConfirmEmailAsync(ConfirmEmailRequestModel confirmEmailRequestModel) { if (confirmEmailRequestModel == null) { throw new EShopperException("Please provide required information!"); } EShopperUser getUserDetails = await _eShopperUserManager.FindByEmailAsync(confirmEmailRequestModel.Email); if (getUserDetails == null) { throw new EShopperException("User not found!"); } bool isEmailConfirmed = await _eShopperUserManager.IsEmailConfirmedAsync(getUserDetails); if (isEmailConfirmed) { throw new EShopperException("Email address already confirmed!"); } IdentityResult confirmEmailResult = await _eShopperUserManager.ConfirmEmailAsync(getUserDetails, confirmEmailRequestModel.ConfirmationToken); if (confirmEmailResult.Succeeded) { return(new AuthenticationResponseModel { Message = "Email address successfully confirmed!" }); } throw new EShopperException(); }
public async Task <LoginResponseModel> ConfirmEmail(ConfirmEmailRequestModel model) { var user = _unitOfWork.Repository <ApplicationUser>().Find(x => x.Email == model.Email); var token = HttpUtility.UrlDecode(model.Token).Replace(" ", "+"); if (user == null) { throw new CustomException(HttpStatusCode.BadRequest, "email", "Email is invalid"); } if (user.EmailConfirmed) { throw new CustomException(HttpStatusCode.BadRequest, "token", "The email address has been already verified"); } // Confirm email var confirmResult = await _userManager.ConfirmEmailAsync(user, token); if (!confirmResult.Succeeded) { throw new CustomException(HttpStatusCode.BadRequest, "token", "The verification link is not active"); } return(await _jwtService.BuildLoginResponse(user)); }
public async Task <IActionResult> ConfirmEmail(ConfirmEmailRequestModel model) { try { var user = await _accountService.ConfirmEmail(new () { Email = model.Email, Pin = model.Pin }); if (user.EmailConfirmed == false) { return(BadRequest(new ErrorViewModel() { ErrorKey = "pin_incorrect" })); } return(Ok()); } catch (UserNotFoundException) { return(BadRequest(new ErrorViewModel() { ErrorKey = "username_not_found" })); } catch (UserLockedOutException) { return(BadRequest(new ErrorViewModel() { ErrorKey = "user_locked_out" })); } catch (Exception) { return(StatusCode(500, ErrorViewModel.UNHANDLED_EXCEPTION)); } }
public async Task <IActionResult> ConfirmEmail([FromBody] ConfirmEmailRequestModel model) { var response = await _accountService.ConfirmEmail(model); return(Json(new JsonResponse <LoginResponseModel>(response))); }
public async Task <IActionResult> ConfirmEmail([FromQuery] ConfirmEmailRequestModel confirmEmailRequestModel) { var response = await _authenticationService.ConfirmEmailAsync(confirmEmailRequestModel); return(Ok(response)); }
public virtual async Task <IActionResult> ConfirmEmail([FromBody] ConfirmEmailRequestModel model) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var user = await UserManager.FindByIdAsync(model.UserId); if (user == null) { return(BadRequest()); } var token = model.Token; var isTokenValid = await UserManager.VerifyUserTokenAsync(user, UserManager.Options.Tokens.EmailConfirmationTokenProvider, "EmailConfirmation", token); if (!isTokenValid) { return(BadRequest(new[] { new ErrorResponseModel { Code = "OperationFailed", Description = "The confirmation token is invalid or expired." } })); } if (await UserManager.IsEmailConfirmedAsync(user)) { return(BadRequest(new[] { new ErrorResponseModel { Code = "OperationFailed", Description = "Your email address is already confirmed." } })); } var result = await UserManager.ConfirmEmailAsync(user, token); if (!result.Succeeded) { return(BadRequest(new[] { new ErrorResponseModel { Code = "OperationFailed", Description = "Could not confirm your email address. " } })); } var roles = await UserManager.GetRolesAsync(user); return(Ok(new { message = "Your email is now confirmed.", session = _jwtFactory.GenerateSession(user.UserName, roles, user.Id) } )); }