public async Task <IHttpActionResult> Post(EmailVerificationRequestModel model) { if (!ModelState.IsValid) { return(BadRequest("Invalid email verification request.")); } model.Code = model.Code.ToIdentityGeneratedTokenFormat(); bool isEmailVerificationCodeExist = await _userService.IsEmailVerificationCodeExist(model); if (!isEmailVerificationCodeExist) { return(BadRequest("Email confirmation code is not valid.")); } var user = await _userService.GetUserAsNoTrackingAsync(model.UserId); if (user == null) { return(BadRequest("Invalid user email verification request.")); } if (user.EmailConfirmed) { return(BadRequest("Email already verified.")); } if (!string.Equals(user.EmailConfirmationCode, model.Code)) { return(BadRequest("Email confirmation code is not valid.")); } await _userService.ConfirmedEmailAsync(model.UserId, model.Code); return(Ok(true)); }
public async Task <bool> IsEmailVerificationCodeExist(EmailVerificationRequestModel model) { var user = await UserManager.Users.AsNoTracking().SingleOrDefaultAsync(x => x.Id == model.UserId); return(!string.IsNullOrWhiteSpace(user?.EmailConfirmationCode)); }