/// <summary> /// Изменить пароль администратором /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <BaseApiResponse> ChangePasswordByAdminAsync(ResetPasswordByAdminModel model) { var user = await UserManager.FindByIdAsync(model.Id); if (user == null) { return(new BaseApiResponse(false, "Пользователь не найден")); } var userDto = await UserSearcher.GetUserByIdAsync(user.Id); var result = UserRightsExtensions.HasRightToEditUser(userDto, User, RolesSetting); if (!result.IsSucceeded) { return(result); } return(await ChangePasswordBaseAsync(user, model.Password)); }
/// <summary> /// Данный метод не может быть вынесен в API (Базовый метод) /// </summary> /// <param name="model"></param> /// <param name="userManager"></param> /// <returns></returns> public async Task <BaseApiResponse> ChangePasswordBaseAsync(ResetPasswordByAdminModel model, UserManager <ApplicationUser> userManager) { var user = await userManager.FindByNameAsync(model.Email); if (user == null) { return(new BaseApiResponse(false, "Пользователь не найден")); } var code = await userManager.GeneratePasswordResetTokenAsync(user); var resetResult = await userManager.ResetPasswordAsync(user, code, model.Password); if (!resetResult.Succeeded) { return(new BaseApiResponse(resetResult.Succeeded, resetResult.Errors.First().Description)); } return(new BaseApiResponse(true, $"Вы изменили пароль для пользователя {user.Email}")); }