示例#1
0
        public async Task <IActionResult> ChangePassword(string id)
        {
            bool userExists = await this.usersService.CheckIfUserExistsAsync(id);

            if (!userExists)
            {
                return(this.ProcessNullEntity(nameof(Blog.Models.User)));
            }

            var currentUserId = await this.userProfileService.GetUserIdAsync(this.User.Identity.Name);

            if (id == currentUserId)
            {
                var messageModel = new MessageModel()
                {
                    Type    = MessageType.Warning,
                    Message = Messages.NotAllowedMsg
                };
                TempDataExtensions.Put(this.TempData, Constants.TempDataKey, messageModel);
                return(this.RedirectToAction("Index", "Users", new { Area = "Admin" }));
            }

            var username = await this.usersService.GetUsernameByUserIdAsync(id);

            var model = new UserChangePasswordBindingModel()
            {
                Id = id, Username = username
            };

            return(this.View(model));
        }
        public async Task <bool> ChangePasswordAsync(UserChangePasswordBindingModel model)
        {
            Validator.ThrowIfNull(model);
            var user = await this.DbContext.Users.FindAsync(model.Id);

            var changePasswordResult = await this.userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

            return(changePasswordResult.Succeeded);
        }
示例#3
0
        public async Task <IActionResult> ChangePassword(UserChangePasswordBindingModel model)
        {
            bool userExists = await this.usersService.CheckIfUserExistsAsync(model.Id);

            if (!userExists)
            {
                return(this.ProcessNullEntity(nameof(Blog.Models.User)));
            }

            var currentUserId = await this.userProfileService.GetUserIdAsync(this.User.Identity.Name);

            if (model.Id == currentUserId)
            {
                var messageModel = new MessageModel()
                {
                    Type    = MessageType.Warning,
                    Message = Messages.NotAllowedMsg
                };
                TempDataExtensions.Put(this.TempData, Constants.TempDataKey, messageModel);
                return(this.RedirectToAction("Index", "Users", new { Area = "Admin" }));
            }

            if (!this.ModelState.IsValid)
            {
                var viewModel = new UserChangePasswordBindingModel()
                {
                    Id = model.Id, Username = model.Username
                };
                return(this.View(viewModel));
            }

            model = TSelfExtensions.TrimStringProperties(model);
            bool succeeded = await this.usersService.ChangePasswordAsync(model);

            if (succeeded)
            {
                var message = new MessageModel()
                {
                    Type    = MessageType.Success,
                    Message = $"The password of user with Username: {model.Username} has been changed successfully."
                };
                TempDataExtensions.Put(this.TempData, Constants.TempDataKey, message);
            }
            else
            {
                var message = new MessageModel()
                {
                    Type    = MessageType.Warning,
                    Message = $"Unexpected error occurred changing password of User with Username: {model.Username}."
                };
                TempDataExtensions.Put(this.TempData, Constants.TempDataKey, message);
            }

            return(this.RedirectToAction("Details", "Users", new { id = model.Id, Area = "Admin" }));
        }
示例#4
0
        public async Task <IActionResult> ChangePassword()
        {
            var user = await this.userManager.GetUserAsync(this.User);

            if (user == null)
            {
                return(this.NotFound());
            }

            if (!await this.userManager.HasPasswordAsync(user))
            {
                return(this.RedirectToAction("SetPassword"));
            }

            var model = new UserChangePasswordBindingModel
            {
                Email = user.Email
            };

            return(this.View(model));
        }
示例#5
0
        public async Task <IActionResult> ChangePassword(UserChangePasswordBindingModel model)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.RedirectToAction("ChangePassword"));
            }

            var user = await this.userManager.GetUserAsync(this.User);

            if (user == null)
            {
                return(this.NotFound());
            }

            if (!await this.userManager.HasPasswordAsync(user))
            {
                return(this.RedirectToAction("SetPassword"));
            }

            var changePasswordResult =
                await this.userManager.ChangePasswordAsync(user, model.OldPassword, model.NewPassword);

            if (!changePasswordResult.Succeeded)
            {
                foreach (var error in changePasswordResult.Errors)
                {
                    this.ModelState.AddModelError(string.Empty, error.Description);
                }

                model.Email = user.Email;

                return(this.View(model));
            }

            this.Success(NotificationMessages.PasswordChanged);

            return(this.LocalRedirect("/"));
        }