From 738bce40dbd14c179c4c9e1ac79ea1662d177eef Mon Sep 17 00:00:00 2001 From: colin Date: Fri, 17 Jan 2025 17:33:50 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20feat:=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=89=B9=E9=87=8F=E5=88=A0=E9=99=A4=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Elasticsearch/ElasticsearchAuditLogManager.cs | 13 +++++++++++++ .../ElasticsearchSecurityLogManager.cs | 13 +++++++++++++ .../EntityFrameworkCore/AuditLogManager.cs | 9 +++++++++ .../EntityFrameworkCore/SecurityLogManager.cs | 10 ++++++++++ .../Abp/AuditLogging/DefaultAuditLogManager.cs | 6 ++++++ .../Abp/AuditLogging/DefaultSecurityLogManager.cs | 6 ++++++ .../LINGYUN/Abp/AuditLogging/IAuditLogManager.cs | 4 ++++ .../LINGYUN/Abp/AuditLogging/ISecurityLogManager.cs | 4 ++++ .../Auditing/AuditLogs/AuditLogDeleteManyInput.cs | 10 ++++++++++ .../Abp/Auditing/AuditLogs/IAuditLogAppService.cs | 2 ++ .../Auditing/SecurityLogs/ISecurityLogAppService.cs | 2 ++ .../SecurityLogs/SecurityLogDeleteManyInput.cs | 10 ++++++++++ .../Abp/Auditing/AuditLogs/AuditLogAppService.cs | 6 ++++++ .../Auditing/SecurityLogs/SecurityLogAppService.cs | 6 ++++++ .../Abp/Auditing/AuditLogs/AuditLogController.cs | 8 ++++++++ .../Auditing/SecurityLogs/SecurityLogController.cs | 8 ++++++++ .../LINGYUN/Abp/Identity/Localization/en.json | 6 ++++++ .../LINGYUN/Abp/Identity/Localization/zh-Hans.json | 6 ++++++ 18 files changed, 129 insertions(+) create mode 100644 aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/AuditLogDeleteManyInput.cs create mode 100644 aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogDeleteManyInput.cs diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs index c82208cfe..6dca20c17 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs @@ -188,6 +188,19 @@ public class ElasticsearchAuditLogManager : IAuditLogManager, ITransientDependen cancellationToken); } + public async virtual Task DeleteManyAsync(List ids, CancellationToken cancellationToken = default) + { + var client = _clientFactory.Create(); + + await client.DeleteByQueryAsync( + x => x.Index(CreateIndex()) + .Query(query => + query.Terms(terms => + terms.Field(field => field.Id) + .Terms(ids))), + cancellationToken); + } + public async virtual Task SaveAsync( AuditLogInfo auditInfo, CancellationToken cancellationToken = default) diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchSecurityLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchSecurityLogManager.cs index d2df7b93f..47264f922 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchSecurityLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchSecurityLogManager.cs @@ -95,6 +95,19 @@ public class ElasticsearchSecurityLogManager : ISecurityLogManager, ITransientDe cancellationToken); } + public async virtual Task DeleteManyAsync(List ids, CancellationToken cancellationToken = default) + { + var client = _clientFactory.Create(); + + await client.DeleteByQueryAsync( + x => x.Index(CreateIndex()) + .Query(query => + query.Terms(terms => + terms.Field(field => field.Id) + .Terms(ids))), + cancellationToken); + } + public async virtual Task> GetListAsync( string sorting = null, int maxResultCount = 50, diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AuditLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AuditLogManager.cs index 2d862c69d..12f935164 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AuditLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AuditLogManager.cs @@ -141,6 +141,15 @@ public class AuditLogManager : IAuditLogManager, ITransientDependency } } + public async virtual Task DeleteManyAsync(List ids, CancellationToken cancellationToken = default) + { + using (var uow = UnitOfWorkManager.Begin(true)) + { + await AuditLogRepository.DeleteManyAsync(ids); + await uow.CompleteAsync(); + } + } + public async virtual Task SaveAsync( AuditLogInfo auditInfo, CancellationToken cancellationToken = default) diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/SecurityLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/SecurityLogManager.cs index 47e93db3e..bc0d328c3 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/SecurityLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/SecurityLogManager.cs @@ -40,6 +40,16 @@ public class SecurityLogManager : ISecurityLogManager, ITransientDependency UnitOfWorkManager = unitOfWorkManager; } + public async virtual Task DeleteManyAsync(List ids, CancellationToken cancellationToken = default) + { + using (var uow = UnitOfWorkManager.Begin(requiresNew: true)) + { + await IdentitySecurityLogRepository.DeleteManyAsync(ids, + cancellationToken: cancellationToken); + await uow.CompleteAsync(); + } + } + public async virtual Task SaveAsync( SecurityLogInfo securityLogInfo, CancellationToken cancellationToken = default) diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultAuditLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultAuditLogManager.cs index f926ebe04..ca4e70eca 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultAuditLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultAuditLogManager.cs @@ -92,4 +92,10 @@ public class DefaultAuditLogManager : IAuditLogManager, ISingletonDependency Logger.LogDebug("No audit log manager is available!"); return Task.CompletedTask; } + + public virtual Task DeleteManyAsync(List ids, CancellationToken cancellationToken = default) + { + Logger.LogDebug("No audit log manager is available!"); + return Task.CompletedTask; + } } diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultSecurityLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultSecurityLogManager.cs index 48eee285b..e71547840 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultSecurityLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultSecurityLogManager.cs @@ -83,4 +83,10 @@ public class DefaultSecurityLogManager : ISecurityLogManager, ISingletonDependen Logger.LogDebug("No security log manager is available!"); return Task.CompletedTask; } + + public virtual Task DeleteManyAsync(List ids, CancellationToken cancellationToken = default) + { + Logger.LogDebug("No security log manager is available!"); + return Task.CompletedTask; + } } diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IAuditLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IAuditLogManager.cs index 918c3bd5b..e140cdf32 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IAuditLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IAuditLogManager.cs @@ -18,6 +18,10 @@ public interface IAuditLogManager Guid id, CancellationToken cancellationToken = default); + Task DeleteManyAsync( + List ids, + CancellationToken cancellationToken = default); + Task SaveAsync( AuditLogInfo auditInfo, CancellationToken cancellationToken = default); diff --git a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/ISecurityLogManager.cs b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/ISecurityLogManager.cs index 05c104731..f8d48320e 100644 --- a/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/ISecurityLogManager.cs +++ b/aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/ISecurityLogManager.cs @@ -17,6 +17,10 @@ public interface ISecurityLogManager Guid id, CancellationToken cancellationToken = default); + Task DeleteManyAsync( + List ids, + CancellationToken cancellationToken = default); + Task SaveAsync( SecurityLogInfo securityLogInfo, CancellationToken cancellationToken = default); diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/AuditLogDeleteManyInput.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/AuditLogDeleteManyInput.cs new file mode 100644 index 000000000..f09eb6edc --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/AuditLogDeleteManyInput.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace LINGYUN.Abp.Auditing.AuditLogs; +public class AuditLogDeleteManyInput +{ + [Required] + public List Ids { get; set; } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/IAuditLogAppService.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/IAuditLogAppService.cs index f5d204aac..a2b367f98 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/IAuditLogAppService.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditLogs/IAuditLogAppService.cs @@ -12,4 +12,6 @@ public interface IAuditLogAppService : IApplicationService Task GetAsync(Guid id); Task DeleteAsync(Guid id); + + Task DeleteManyAsync(AuditLogDeleteManyInput input); } diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/ISecurityLogAppService.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/ISecurityLogAppService.cs index e1f979563..c9455018a 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/ISecurityLogAppService.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/ISecurityLogAppService.cs @@ -12,4 +12,6 @@ public interface ISecurityLogAppService : IApplicationService Task GetAsync(Guid id); Task DeleteAsync(Guid id); + + Task DeleteManyAsync(SecurityLogDeleteManyInput input); } diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogDeleteManyInput.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogDeleteManyInput.cs new file mode 100644 index 000000000..8cdb684d4 --- /dev/null +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogDeleteManyInput.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace LINGYUN.Abp.Auditing.SecurityLogs; +public class SecurityLogDeleteManyInput +{ + [Required] + public List Ids { get; set; } +} diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/AuditLogs/AuditLogAppService.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/AuditLogs/AuditLogAppService.cs index d7f01cc95..68125b9f4 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/AuditLogs/AuditLogAppService.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/AuditLogs/AuditLogAppService.cs @@ -59,4 +59,10 @@ public class AuditLogAppService : AuditingApplicationServiceBase, IAuditLogAppSe { await AuditLogManager.DeleteAsync(id); } + + [Authorize(AuditingPermissionNames.AuditLog.Delete)] + public async virtual Task DeleteManyAsync(AuditLogDeleteManyInput input) + { + await AuditLogManager.DeleteManyAsync(input.Ids); + } } diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogAppService.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogAppService.cs index f1837cff5..e37a19143 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogAppService.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogAppService.cs @@ -52,4 +52,10 @@ public class SecurityLogAppService : AuditingApplicationServiceBase, ISecurityLo { await SecurityLogManager.DeleteAsync(id); } + + [Authorize(AuditingPermissionNames.SecurityLog.Delete)] + public async virtual Task DeleteManyAsync(SecurityLogDeleteManyInput input) + { + await SecurityLogManager.DeleteManyAsync(input.Ids); + } } diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs index 56bbc6c8e..12397733d 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs @@ -32,6 +32,14 @@ public class AuditLogController : AbpControllerBase, IAuditLogAppService await AuditLogAppService.DeleteAsync(id); } + [HttpDelete] + [Route("bulk")] + [Authorize(AuditingPermissionNames.AuditLog.Delete)] + public async virtual Task DeleteManyAsync([FromBody] AuditLogDeleteManyInput input) + { + await AuditLogAppService.DeleteManyAsync(input); + } + [HttpGet] [Route("{id}")] public async virtual Task GetAsync(Guid id) diff --git a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs index aaf5b2284..cc8af0999 100644 --- a/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs +++ b/aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs @@ -32,6 +32,14 @@ public class SecurityLogController : AbpControllerBase, ISecurityLogAppService await SecurityLogAppService.DeleteAsync(id); } + [HttpDelete] + [Route("bulk")] + [Authorize(AuditingPermissionNames.SecurityLog.Delete)] + public async virtual Task DeleteManyAsync([FromBody] SecurityLogDeleteManyInput input) + { + await SecurityLogAppService.DeleteManyAsync(input); + } + [HttpGet] [Route("{id}")] public async virtual Task GetAsync(Guid id) diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/en.json b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/en.json index d77be660b..a347c358e 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/en.json +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/en.json @@ -87,6 +87,12 @@ "SetPassword": "Set Password", "LockTime": "Lock Time", "LockType": "Lock Type", + "LockType:Seconds": "Seconds", + "LockType:Minutes": "Minutes", + "LockType:Hours": "Hours", + "LockType:Days": "Days", + "LockType:Months": "Months", + "LockType:Years": "Years", "Confirmed": "Confirmed", "UnConfirmed": "UnConfirmed", "UnActived": "UnActived", diff --git a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/zh-Hans.json b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/zh-Hans.json index 41a2323c2..eddcfaa1b 100644 --- a/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/zh-Hans.json +++ b/aspnet-core/modules/identity/LINGYUN.Abp.Identity.Domain.Shared/LINGYUN/Abp/Identity/Localization/zh-Hans.json @@ -87,6 +87,12 @@ "SetPassword": "设置密码", "LockTime": "锁定时间", "LockType": "锁定类型", + "LockType:Seconds": "秒", + "LockType:Minutes": "分", + "LockType:Hours": "时", + "LockType:Days": "天", + "LockType:Months": "月", + "LockType:Years": "年", "Confirmed": "已确认", "UnConfirmed": "未确认", "UnActived": "未启用",