示例#1
0
        public async Task <IActionResult> EditPassword(EditPasswordViewModel newPasswrd)
        {
            if (ModelState.IsValid)
            {
                var user = await _user.FindByNameAsync(User.Identity.Name);

                var passwordsMatch = await _user.CheckPasswordAsync(user, newPasswrd.OldPassword);

                if (passwordsMatch)
                {
                    var passwordHasher = HttpContext.RequestServices
                                         .GetService(typeof(IPasswordHasher <User>)) as IPasswordHasher <User>;

                    user.PasswordHash = passwordHasher.HashPassword(user, newPasswrd.NewPassword);

                    var res = await _user.UpdateAsync(user);

                    if (res.Succeeded)
                    {
                        await _notify.AboutSecurityAsync(SecurityReason.PasswordUpdated, user.Email);

                        return(View("Index", new Tuple <ProfileViewModel, PassportViewModel>(
                                        _profile.ConstructView(user), _passport.ConstructView(user))));
                    }
                }
                ModelState.AddModelError(string.Empty, "Incorrect current password!");
            }
            return(View("Index", new Tuple <ProfileViewModel, PassportViewModel>(
                            _profile.ConstructView(_user.WithProfile(User.Identity.Name)),
                            _passport.ConstructView(_user.WithPassport(User.Identity.Name)))));
        }