public async Task <IdentityResult> ChangePasswordAsync(User user, string newPassword, CancellationToken token = default) { var store = this.Store as IUserPasswordStore <User>; if (store == null) { var errors = new IdentityError[] { new IdentityError { Description = "Current UserStore doesn't implement IUserPasswordStore" } }; return(IdentityResult.Failed(errors)); } if (PasswordValidators.Any()) { var tasks = PasswordValidators.Select(x => x.ValidateAsync(this, user, newPassword)); var results = await Task.WhenAll(tasks); if (results.Any(x => !x.Succeeded)) { return(results.First(x => !x.Succeeded)); } } var newPasswordHash = PasswordHasher.HashPassword(user, newPassword); await store.SetPasswordHashAsync(user, newPasswordHash, token); return(IdentityResult.Success); }