Exemple #1
0
        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);
            }
Exemple #3
0
        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));