public async Task <IActionResult> ConfirmEmail([FromBody] ConfirmEmailDto dto) { ConfirmEmailDtoValidator validator = new ConfirmEmailDtoValidator(); ValidationResult result = await validator.ValidateAsync(dto); if (result.IsValid) { var user = await _userManager.FindByIdAsync(dto.UserId); if (user == null) { return(NotFound()); } await using (var transaction = await _dbContext.Database.BeginTransactionAsync()) { try { if (await _userManager.ConfirmEmailAsync(user, dto.Token) != IdentityResult.Success) { throw new DbUpdateException(); } #region UpdateSecurity var oldSecurityStamp = user.SecurityStamp; if (await _userManager.UpdateSecurityStampAsync(user) != IdentityResult.Success) { throw new DbUpdateException(); } if (await _userManager.ReplaceClaimAsync(user, new Claim(ClaimTypes.Sid, oldSecurityStamp), new Claim(ClaimTypes.Sid, user.SecurityStamp)) != IdentityResult.Success) { throw new DbUpdateException(); } #endregion await transaction.CommitAsync(); } catch (DbUpdateException) { await transaction.RollbackAsync(); throw; } } return(NoContent()); } return(BadRequest(result.Errors)); }
public void Setup() { _validator = new ConfirmEmailDtoValidator(); }