public async Task <IActionResult> ChangePassword(string username, UserChangePasswordServiceModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            User user = await this.userManager.FindByNameAsync(username);

            if (user == null)
            {
                TempData.AddErrorMessage(string.Format(EntityNotFound, username));

                return(this.RedirectToHomeIndex());
            }

            bool userHasPassword = await this.userManager.HasPasswordAsync(user);

            if (!userHasPassword)
            {
                TempData.AddErrorMessage(UserChangePasswordExternalLoginErrorMessage);

                return(RedirectToAction(nameof(Profile), new { username }));
            }

            bool oldPasswordIsValid = await this.userService.IsOldPasswordValid(user, model.OldPassword);

            if (!oldPasswordIsValid)
            {
                TempData.AddErrorMessage(UserOldPasswordNotValid);

                return(View(model));
            }

            bool changePasswordResult = await this.userService.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

            if (!changePasswordResult)
            {
                TempData.AddWarningMessage(EntityNotModified);

                return(View(model));
            }

            TempData.AddSuccessMessage(UserChangePasswordSuccessMessage);

            return(RedirectToAction(nameof(Profile), new { username }));
        }
Ejemplo n.º 2
0
        public async Task GetChangePasswordByUsernameAsync_WithUsername_ShouldReturnValidViewModel()
        {
            // Arrange
            FitStoreDbContext database = this.Database;

            DatabaseHelper.SeedData(database);

            IUserService userService = new UserService(database, null);

            // Act
            UserChangePasswordServiceModel result = await userService.GetChangePasswordByUsernameAsync(username);

            // Assert
            result.OldPassword.Should().BeNull();
            result.NewPassword.Should().BeNull();
            result.ConfirmPassword.Should().BeNull();
        }
        public async Task <IActionResult> ChangePassword(string username)
        {
            User user = await this.userManager.FindByNameAsync(username);

            if (user == null)
            {
                TempData.AddErrorMessage(string.Format(EntityNotFound, username));

                return(this.RedirectToHomeIndex());
            }

            bool userHasPassword = await this.userManager.HasPasswordAsync(user);

            if (!userHasPassword)
            {
                TempData.AddErrorMessage(UserChangePasswordExternalLoginErrorMessage);

                return(RedirectToAction(nameof(Profile), new { username }));
            }

            UserChangePasswordServiceModel model = await this.userService.GetChangePasswordByUsernameAsync(username);

            return(View(model));
        }