diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs index 1312154d..90252040 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissionDefinitionProvider.cs @@ -13,6 +13,7 @@ public class BasicManagementPermissionDefinitionProvider : PermissionDefinitionP var userManagement = abpIdentityGroup.GetPermissionOrNull(IdentityPermissions.Users.Default); userManagement.AddChild(BasicManagementPermissions.SystemManagement.UserEnable, L("Permission:Enable"), multiTenancySide: MultiTenancySides.Both); userManagement.AddChild(BasicManagementPermissions.SystemManagement.UserExport, L("Permission:Export"), multiTenancySide: MultiTenancySides.Both); + userManagement.AddChild(BasicManagementPermissions.SystemManagement.ResetPassword, L("Permission:ResetPassword"), multiTenancySide: MultiTenancySides.Both); abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.AuditLog, L("Permission:AuditLogManagement"), multiTenancySide: MultiTenancySides.Both); abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.Setting, L("Permission:SettingManagement"), multiTenancySide: MultiTenancySides.Both); diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs index f6367c0c..b0b3ee9d 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Permissions/BasicManagementPermissions.cs @@ -12,6 +12,7 @@ public class BasicManagementPermissions public const string Default = "AbpIdentity"; public const string UserEnable = Default + ".Users.Enable"; public const string UserExport = Default + ".Users.Export"; + public const string ResetPassword = Default + ".Users.ResetPassword"; public const string AuditLog = Default + ".AuditLog"; public const string Setting = Default + ".Setting"; public const string IdentitySecurityLog = Default + ".IdentitySecurityLogs"; diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/ResetPasswordInput.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/ResetPasswordInput.cs new file mode 100644 index 00000000..881dbb7e --- /dev/null +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/Dtos/ResetPasswordInput.cs @@ -0,0 +1,16 @@ +using Volo.Abp.Account.Localization; +using Volo.Abp.Auditing; +using Volo.Abp.Identity; +using Volo.Abp.Validation; + +namespace Lion.AbpPro.BasicManagement.Users.Dtos; + +public class ResetPasswordInput +{ + public Guid UserId { get; set; } + + [Required] + [DisableAuditing] + [DynamicStringLength(typeof(IdentityUserConsts), nameof(IdentityUserConsts.MaxPasswordLength))] + public string Password { get; set; } +} \ No newline at end of file diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs index 7cc48f0f..67ef5f6a 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application.Contracts/Users/IUserAppService.cs @@ -48,6 +48,11 @@ namespace Lion.AbpPro.BasicManagement.Users /// Task ChangePasswordAsync(ChangePasswordInput input); + /// + /// 重置密码 + /// + Task RestPasswordAsync(ResetPasswordInput input); + /// /// 锁定用户 /// diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs index f79c7de4..8942a69c 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/Users/UserAppService.cs @@ -64,12 +64,11 @@ namespace Lion.AbpPro.BasicManagement.Users SkipCount = input.SkipCount, Sorting = nameof(IHasModificationTime.LastModificationTime) }; - + var source = await _identityUserRepository .GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, request.Filter); return ObjectMapper.Map, List>(source); - } /// @@ -155,6 +154,20 @@ namespace Lion.AbpPro.BasicManagement.Users return result.Succeeded; } + /// + /// 重置 + /// + [Authorize(BasicManagementPermissions.SystemManagement.ResetPassword)] + public virtual async Task RestPasswordAsync(ResetPasswordInput input) + { + await _options.SetAsync(); + var identityUser = await _userManager.GetByIdAsync(input.UserId); + await _userManager.RemovePasswordAsync(identityUser); + var result = await _userManager.AddPasswordAsync(identityUser, input.Password); + result.CheckErrors(); + return result.Succeeded; + } + /// /// 锁定用户 /// @@ -167,7 +180,7 @@ namespace Lion.AbpPro.BasicManagement.Users identityUser.SetIsActive(input.Locked); await _userManager.UpdateAsync(identityUser); } - + /// /// 通过username获取用户信息 /// @@ -178,6 +191,7 @@ namespace Lion.AbpPro.BasicManagement.Users { throw new BusinessException(BasicManagementErrorCodes.UserNotExist); } + return ObjectMapper.Map(user); } @@ -188,6 +202,7 @@ namespace Lion.AbpPro.BasicManagement.Users { throw new BusinessException(BasicManagementErrorCodes.UserNotExist); } + return ObjectMapper.Map(user); } } diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json index 16b5ccb2..b725f9e2 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/en.json @@ -9,6 +9,7 @@ "Permission:Delete": "Delete", "Permission:Export": "Export", "Permission:Enable": "Enable|Disable", + "Permission:ResetPassword": "ResetPassword", "Permission:SystemManagement": "SystemManagement", "Permission:AuditLogManagement": "AuditLog", "Permission:HangfireManagement": "BackgroundTask", diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json index 91d5bc6b..a9d214db 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Domain.Shared/Localization/BasicManagement/zh-Hans.json @@ -9,6 +9,7 @@ "Permission:Delete": "删除", "Permission:Export": "导出", "Permission:Enable": "启用|禁用", + "Permission:ResetPassword": "重置密码", "Permission:AuditLogManagement": "审计日志", "Permission:SystemManagement": "系统管理", "Permission:HangfireManagement": "后台任务", diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs index d444711b..778f7204 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.HttpApi/Systems/UserController.cs @@ -71,6 +71,13 @@ namespace Lion.AbpPro.BasicManagement.Systems return _userAppService.ChangePasswordAsync(input); } + [HttpPost("resetPassword")] + [SwaggerOperation(summary: "重置密码", Tags = new[] { "Users" })] + public Task RestPasswordAsync(ResetPasswordInput input) + { + return _userAppService.RestPasswordAsync(input); + } + [HttpPost("lock")] [SwaggerOperation(summary: "锁定用户", Tags = new[] { "Users" })] public Task LockAsync(LockUserInput input)