Esempio n. 1
0
        public async Task <IActionResult> UpdateLogin([FromBody] ChangeLoginRequest model)
        {
            var user = await _userManager.FindByIdAsync(CurrentUserId.ToString());

            if (user == null)
            {
                return(Unauthorized());
            }
            var hasPassword = await _userManager.HasPasswordAsync(user);

            if (hasPassword)
            {
                var changePasswordResult = await _userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

                if (!changePasswordResult.Succeeded)
                {
                    return(BadRequest());
                }
            }
            else
            {
                var createPasswordResult = await _userManager.AddPasswordAsync(user, model.NewPassword);

                if (!createPasswordResult.Succeeded)
                {
                    return(BadRequest());
                }
            }
            if (!string.IsNullOrWhiteSpace(model.Username) && model.Username != user.UserName)
            {
                var setUsernameResult = await _userManager.SetUserNameAsync(user, model.Username);

                if (!setUsernameResult.Succeeded)
                {
                    return(BadRequest());
                }
            }

            return(Ok());
        }
        public async Task <ActionResult <AccountSettingsChangeResponse> > ChangeLogin([FromBody] ChangeLoginRequest request)
        {
            var(email, _) = HttpContext.ParseCredentials();

            if (email is null)
            {
                return(new BadRequestObjectResult(new AccountSettingsChangeResponse
                {
                    Email = "Not found",
                    Operation = "SignIn changing",
                    Successful = false,
                    Error = "Token not valid. Email address not found"
                }));
            }

            var result = await _settingsService.ChangeLoginToAsync(email, request.NewLogin);

            return(new AccountSettingsChangeResponse
            {
                Email = email,
                Operation = "SignIn changing",
                Successful = result
            });
        }