public async Task <IdentityResult> ChangeEmail(EmailUpdate update) { if (update == null) { _logger.LogWarning("AccountUpdate object null"); throw new ArgumentNullException(nameof(update)); } if (string.IsNullOrEmpty(update.Email)) { _logger.LogWarning("EmailUpdate or Email null"); throw new MissingInformationException("Missing email update"); } _logger.LogInformation("Attempting to load user"); var user = await _userManager.FindByIdAsync(update.UserId); if (user == null) { _logger.LogWarning("Unable to locate user: {Id}", update.UserId); throw new UserNotFoundException($"Unable to locate user: {update.UserId}"); } var email = update.Email; if (user.Email == email) { _logger.LogWarning("New email same as the old; no change made"); return(IdentityResult.Failed()); } _logger.LogInformation("Changing email"); var emailChangeToken = await _userManager.GenerateChangeEmailTokenAsync(user, email); return(await _userManager.ChangeEmailAsync(user, email, emailChangeToken)); }
public async Task ChangeEmail_ChangeSuccessful_Returns204() { // Arrange var update = new EmailUpdate("UserIdBob", "*****@*****.**") .ToJson(); // Act var response = await _client.PatchAsync("api/users/change-email", update); // Assert response.StatusCode.Should().Be(HttpStatusCode.NoContent); }
public async Task <IActionResult> ChangeEmail(EmailUpdate update) { IdentityResult result; try { result = await _userService.ChangeEmail(update); } catch (UserNotFoundException ex) { return(NotFound(ex.Message)); } catch (Exception ex) { return(BadRequest(ex.Message)); } if (!result.Succeeded) { return(BadRequest()); } return(NoContent()); }
public IAggregateUpdate Handle(EmailUpdate message) => Update(entity => entity .By(e => e.Id, message.Id) .Set(e => e.Email, message.Email));