Browse Source

feat(auditing): 从常量提取模块名称

pull/1125/head
colin 1 year ago
parent
commit
68f140a9b1
  1. 1
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditingRemoteServiceConsts.cs
  2. 51
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.Generated.cs
  3. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.cs
  4. 51
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.Generated.cs
  5. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.cs
  6. 35
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.Generated.cs
  7. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.cs
  8. 51
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.Generated.cs
  9. 7
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.cs
  10. 1451
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/auditing-generate-proxy.json
  11. 3
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xml
  12. 30
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xsd
  13. 32
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN.Abp.Auditing.HttpApi.Client.csproj
  14. 24
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN/Abp/Auditing/AbpAuditingHttpApiClientModule.cs
  15. 2
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs
  16. 2
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesController.cs
  17. 2
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/LogController.cs
  18. 2
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs
  19. 74
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs
  20. 3
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml
  21. 39
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj
  22. 19
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs
  23. 22
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml
  24. 60
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js
  25. 26
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs
  26. 12
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json
  27. 146
      aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js

1
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Application.Contracts/LINGYUN/Abp/Auditing/AuditingRemoteServiceConsts.cs

@ -3,4 +3,5 @@
public static class AuditingRemoteServiceConsts
{
public const string RemoteServiceName = "AbpAuditing";
public const string ModuleName = "auditing";
}

51
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.Generated.cs

@ -0,0 +1,51 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using LINGYUN.Abp.Auditing.AuditLogs;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.AuditLogs;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IAuditLogAppService), typeof(AuditLogClientProxy))]
public partial class AuditLogClientProxy : ClientProxyBase<IAuditLogAppService>, IAuditLogAppService
{
public virtual async Task DeleteAsync(Guid id)
{
await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task DeleteManyAsync(AuditLogDeleteManyInput input)
{
await RequestAsync(nameof(DeleteManyAsync), new ClientProxyRequestTypeValue
{
{ typeof(AuditLogDeleteManyInput), input }
});
}
public virtual async Task<AuditLogDto> GetAsync(Guid id)
{
return await RequestAsync<AuditLogDto>(nameof(GetAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task<PagedResultDto<AuditLogDto>> GetListAsync(AuditLogGetByPagedDto input)
{
return await RequestAsync<PagedResultDto<AuditLogDto>>(nameof(GetListAsync), new ClientProxyRequestTypeValue
{
{ typeof(AuditLogGetByPagedDto), input }
});
}
}

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/AuditLogClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of AuditLogClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.AuditLogs;
public partial class AuditLogClientProxy
{
}

51
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.Generated.cs

@ -0,0 +1,51 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using LINGYUN.Abp.Auditing.AuditLogs;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.AuditLogs;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IEntityChangesAppService), typeof(EntityChangesClientProxy))]
public partial class EntityChangesClientProxy : ClientProxyBase<IEntityChangesAppService>, IEntityChangesAppService
{
public virtual async Task<EntityChangeDto> GetAsync(Guid id)
{
return await RequestAsync<EntityChangeDto>(nameof(GetAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task<PagedResultDto<EntityChangeDto>> GetListAsync(EntityChangeGetByPagedDto input)
{
return await RequestAsync<PagedResultDto<EntityChangeDto>>(nameof(GetListAsync), new ClientProxyRequestTypeValue
{
{ typeof(EntityChangeGetByPagedDto), input }
});
}
public virtual async Task<EntityChangeWithUsernameDto> GetWithUsernameAsync(Guid id)
{
return await RequestAsync<EntityChangeWithUsernameDto>(nameof(GetWithUsernameAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task<ListResultDto<EntityChangeWithUsernameDto>> GetWithUsernameAsync(EntityChangeGetWithUsernameDto input)
{
return await RequestAsync<ListResultDto<EntityChangeWithUsernameDto>>(nameof(GetWithUsernameAsync), new ClientProxyRequestTypeValue
{
{ typeof(EntityChangeGetWithUsernameDto), input }
});
}
}

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of EntityChangesClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.AuditLogs;
public partial class EntityChangesClientProxy
{
}

35
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.Generated.cs

@ -0,0 +1,35 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using LINGYUN.Abp.Auditing.Logging;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.Logging;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ILogAppService), typeof(LogClientProxy))]
public partial class LogClientProxy : ClientProxyBase<ILogAppService>, ILogAppService
{
public virtual async Task<LogDto> GetAsync(string id)
{
return await RequestAsync<LogDto>(nameof(GetAsync), new ClientProxyRequestTypeValue
{
{ typeof(string), id }
});
}
public virtual async Task<PagedResultDto<LogDto>> GetListAsync(LogGetByPagedDto input)
{
return await RequestAsync<PagedResultDto<LogDto>>(nameof(GetListAsync), new ClientProxyRequestTypeValue
{
{ typeof(LogGetByPagedDto), input }
});
}
}

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/Logging/LogClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of LogClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.Logging;
public partial class LogClientProxy
{
}

51
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.Generated.cs

@ -0,0 +1,51 @@
// This file is automatically generated by ABP framework to use MVC Controllers from CSharp
using LINGYUN.Abp.Auditing.SecurityLogs;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Application.Dtos;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Http.Client.ClientProxying;
using Volo.Abp.Http.Modeling;
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.SecurityLogs;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(ISecurityLogAppService), typeof(SecurityLogClientProxy))]
public partial class SecurityLogClientProxy : ClientProxyBase<ISecurityLogAppService>, ISecurityLogAppService
{
public virtual async Task DeleteAsync(Guid id)
{
await RequestAsync(nameof(DeleteAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task DeleteManyAsync(SecurityLogDeleteManyInput input)
{
await RequestAsync(nameof(DeleteManyAsync), new ClientProxyRequestTypeValue
{
{ typeof(SecurityLogDeleteManyInput), input }
});
}
public virtual async Task<SecurityLogDto> GetAsync(Guid id)
{
return await RequestAsync<SecurityLogDto>(nameof(GetAsync), new ClientProxyRequestTypeValue
{
{ typeof(Guid), id }
});
}
public virtual async Task<PagedResultDto<SecurityLogDto>> GetListAsync(SecurityLogGetByPagedDto input)
{
return await RequestAsync<PagedResultDto<SecurityLogDto>>(nameof(GetListAsync), new ClientProxyRequestTypeValue
{
{ typeof(SecurityLogGetByPagedDto), input }
});
}
}

7
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogClientProxy.cs

@ -0,0 +1,7 @@
// This file is part of SecurityLogClientProxy, you can customize it here
// ReSharper disable once CheckNamespace
namespace LINGYUN.Abp.Auditing.SecurityLogs;
public partial class SecurityLogClientProxy
{
}

1451
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/ClientProxies/auditing-generate-proxy.json

File diff suppressed because it is too large

3
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/FodyWeavers.xsd

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. -->
<xs:element name="Weavers">
<xs:complexType>
<xs:all>
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="VerifyAssembly" type="xs:boolean">
<xs:annotation>
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="VerifyIgnoreCodes" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="GenerateXsd" type="xs:boolean">
<xs:annotation>
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>

32
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN.Abp.Auditing.HttpApi.Client.csproj

@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\..\configureawait.props" />
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0;net9.0</TargetFrameworks>
<AssemblyName>LINGYUN.Abp.Auditing.HttpApi.Client</AssemblyName>
<PackageId>LINGYUN.Abp.Auditing.HttpApi.Client</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<None Remove="ClientProxies\auditing-generate-proxy.json" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="ClientProxies\auditing-generate-proxy.json" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Http.Client" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LINGYUN.Abp.Auditing.Application.Contracts\LINGYUN.Abp.Auditing.Application.Contracts.csproj" />
</ItemGroup>
</Project>

24
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi.Client/LINGYUN/Abp/Auditing/AbpAuditingHttpApiClientModule.cs

@ -0,0 +1,24 @@
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Http.Client;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.Auditing;
[DependsOn(
typeof(AbpAuditingApplicationContractsModule),
typeof(AbpHttpClientModule))]
public class AbpAuditingHttpApiClientModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddStaticHttpClientProxies(
typeof(AbpAuditingApplicationContractsModule).Assembly,
AuditingRemoteServiceConsts.RemoteServiceName);
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpAuditingHttpApiClientModule>();
});
}
}

2
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/AuditLogController.cs

@ -13,7 +13,7 @@ namespace LINGYUN.Abp.Auditing.AuditLogs;
[RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)]
[Area("auditing")]
[ControllerName("audit-log")]
[Route("api/auditing/audit-log")]
[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/audit-log")]
[Authorize(AuditingPermissionNames.AuditLog.Default)]
public class AuditLogController : AbpControllerBase, IAuditLogAppService
{

2
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/AuditLogs/EntityChangesController.cs

@ -13,7 +13,7 @@ namespace LINGYUN.Abp.Auditing.AuditLogs;
[RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)]
[Area("auditing")]
[ControllerName("entity-changes")]
[Route("api/auditing/entity-changes")]
[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/entity-changes")]
[Authorize(AuditingPermissionNames.AuditLog.Default)]
public class EntityChangesController : AbpControllerBase, IEntityChangesAppService
{

2
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/Logging/LogController.cs

@ -12,7 +12,7 @@ namespace LINGYUN.Abp.Auditing.Logging;
[RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)]
[Area("auditing")]
[ControllerName("logging")]
[Route("api/auditing/logging")]
[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/logging")]
[Authorize(AuditingPermissionNames.SystemLog.Default)]
public class LogController : AbpControllerBase, ILogAppService
{

2
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.HttpApi/LINGYUN/Abp/Auditing/SecurityLogs/SecurityLogController.cs

@ -13,7 +13,7 @@ namespace LINGYUN.Abp.Auditing.SecurityLogs;
[RemoteService(Name = AuditingRemoteServiceConsts.RemoteServiceName)]
[Area("auditing")]
[ControllerName("security-log")]
[Route("api/auditing/security-log")]
[Route($"api/{AuditingRemoteServiceConsts.ModuleName}/security-log")]
[Authorize(AuditingPermissionNames.SecurityLog.Default)]
public class SecurityLogController : AbpControllerBase, ISecurityLogAppService
{

74
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/AbpAuditingWebModule.cs

@ -0,0 +1,74 @@
using LINGYUN.Abp.Auditing.Web.ProfileManagement;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Account.Web;
using Volo.Abp.Account.Web.Pages.Account;
using Volo.Abp.Account.Web.ProfileManagement;
using Volo.Abp.AspNetCore.Mvc.Localization;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.AuditLogging.Localization;
using Volo.Abp.AutoMapper;
using Volo.Abp.Http.ProxyScripting.Generators.JQuery;
using Volo.Abp.Modularity;
using Volo.Abp.UI.Navigation;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.Auditing.Web;
[DependsOn(
typeof(AbpAccountWebModule),
typeof(AbpAuditingApplicationContractsModule))]
public class AbpAuditingWebModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
context.Services.PreConfigure<AbpMvcDataAnnotationsLocalizationOptions>(options =>
{
options.AddAssemblyResource(typeof(AuditLoggingResource), typeof(AbpAuditingWebModule).Assembly);
});
PreConfigure<IMvcBuilder>(mvcBuilder =>
{
mvcBuilder.AddApplicationPartIfNotExists(typeof(AbpAuditingWebModule).Assembly);
});
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<AbpAuditingWebModule>();
});
ConfigureProfileManagementPage();
context.Services.AddAutoMapperObjectMapper<AbpAuditingWebModule>();
Configure<AbpAutoMapperOptions>(options =>
{
options.AddMaps<AbpAuditingWebModule>(validate: true);
});
Configure<DynamicJavaScriptProxyOptions>(options =>
{
options.DisableModule(AuditingRemoteServiceConsts.ModuleName);
});
}
private void ConfigureProfileManagementPage()
{
Configure<ProfileManagementPageOptions>(options =>
{
options.Contributors.Add(new SecurityLogManagementPageContributor());
});
Configure<AbpBundlingOptions>(options =>
{
options.ScriptBundles
.Configure(typeof(ManageModel).FullName,
configuration =>
{
configuration.AddFiles("/client-proxies/auditing-proxy.js");
configuration.AddFiles("/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js");
});
});
}
}

3
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

39
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/LINGYUN.Abp.Auditing.Web.csproj

@ -0,0 +1,39 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\..\..\..\configureawait.props" />
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<AssemblyName>LINGYUN.Abp.Auditing.Web</AssemblyName>
<PackageId>LINGYUN.Abp.Auditing.Web</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
<RootNamespace>LINGYUN.Abp.Auditing.Web</RootNamespace>
<IsPackable>true</IsPackable>
<OutputType>Library</OutputType>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="Modules\**\*.js" />
<EmbeddedResource Include="Modules\**\*.css" />
<EmbeddedResource Include="Pages\**\*.js" />
<EmbeddedResource Include="Pages\**\*.css" />
<EmbeddedResource Include="wwwroot\**\*.js" />
<EmbeddedResource Include="wwwroot\**\*.css" />
<Content Remove="Modules\**\*.js" />
<Content Remove="Modules\**\*.css" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.Account.Web" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\LINGYUN.Abp.Auditing.Application.Contracts\LINGYUN.Abp.Auditing.Application.Contracts.csproj" />
</ItemGroup>
</Project>

19
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/AccountProfileSecurityLogManagementGroupViewComponent.cs

@ -0,0 +1,19 @@
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.Auditing.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog;
public class AccountProfileSecurityLogManagementGroupViewComponent : AbpViewComponent
{
public AccountProfileSecurityLogManagementGroupViewComponent()
{
}
public async virtual Task<IViewComponentResult> InvokeAsync()
{
await Task.CompletedTask;
return View("~/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml");
}
}

22
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.cshtml

@ -0,0 +1,22 @@
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.Account.Localization
@using Volo.Abp.Localization
@inject IHtmlLocalizer<AccountResource> L
@section scripts {
<abp-script src="/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js" />
}
<abp-card>
<abp-card-header>
<abp-row>
<abp-column size-md="_6">
<abp-card-title>@L["SecurityLog"]</abp-card-title>
</abp-column>
</abp-row>
</abp-card-header>
<abp-card-body>
<abp-table striped-rows="true" id="SecurityLogTable"></abp-table>
</abp-card-body>
</abp-card>

60
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Pages/Account/Components/ProfileManagementGroup/SecurityLog/Index.js

@ -0,0 +1,60 @@
$(function () {
var ul = abp.localization.getResource('AbpUi');
var il = abp.localization.getResource('AbpIdentity');
var dataTable = $('#SecurityLogTable').DataTable(
abp.libs.datatables.normalizeConfiguration({
serverSide: true,
paging: true,
searching: false,
scrollX: true,
ajax: abp.libs.datatables.createAjax(labp.auditing.securityLogs.securityLog.getList),
columnDefs: [
{
title: ul('Actions'),
rowAction: {
items:
[
{
text: il('RevokeSession'),
confirmMessage: function () {
return il('SessionWillBeRevokedMessage');
},
visible: function (data) {
return data.sessionId !== abp.currentUser?.sessionId;
},
action: function (data) {
labp.account.myProfile
.revokeSession(data.record.sessionId)
.then(function () {
abp.notify.info(
il('SuccessfullyRevoked')
);
dataTable.ajax.reload();
});
}
}
]
}
},
{
title: il('DisplayName:Device'),
data: "device"
},
{
title: il('DisplayName:IpAddresses'),
data: "ipAddresses"
},
{
title: il('DisplayName:SignedIn'),
data: "signedIn",
render: function (data) {
return luxon
.DateTime
.fromISO(data, {
locale: abp.localization.currentCulture.name
}).toLocaleString(luxon.DateTime.DATETIME_FULL_WITH_SECONDS);
}
}]
})
);
});

26
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/ProfileManagement/SecurityLogManagementPageContributor.cs

@ -0,0 +1,26 @@
using LINGYUN.Abp.Auditing.Web.Pages.Account.Components.ProfileManagementGroup.SecurityLog;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using System.Threading.Tasks;
using Volo.Abp.Account.Web.ProfileManagement;
using Volo.Abp.AuditLogging.Localization;
namespace LINGYUN.Abp.Auditing.Web.ProfileManagement;
public class SecurityLogManagementPageContributor : IProfileManagementPageContributor
{
public virtual Task ConfigureAsync(ProfileManagementPageCreationContext context)
{
var l = context.ServiceProvider.GetRequiredService<IStringLocalizer<AuditLoggingResource>>();
context.Groups.Add(
new ProfileManagementPageGroup(
"LINGYUN.Abp.Account.SecurityLog",
l["SecurityLog"],
typeof(AccountProfileSecurityLogManagementGroupViewComponent)
)
);
return Task.CompletedTask;
}
}

12
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/Properties/launchSettings.json

@ -0,0 +1,12 @@
{
"profiles": {
"LINGYUN.Abp.Auditing.Web": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:62925;http://localhost:62926"
}
}
}

146
aspnet-core/modules/auditing/LINGYUN.Abp.Auditing.Web/wwwroot/client-proxies/auditing-proxy.js

@ -0,0 +1,146 @@
/* This file is automatically generated by ABP framework to use MVC Controllers from javascript. */
// module auditing
(function(){
// controller labp.auditing.auditLogs.auditLog
(function(){
abp.utils.createNamespace(window, 'labp.auditing.auditLogs.auditLog');
labp.auditing.auditLogs.auditLog['delete'] = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/audit-log/' + id + '',
type: 'DELETE',
dataType: null
}, ajaxParams));
};
labp.auditing.auditLogs.auditLog.deleteMany = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/audit-log/bulk',
type: 'DELETE',
dataType: null,
data: JSON.stringify(input)
}, ajaxParams));
};
labp.auditing.auditLogs.auditLog.get = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/audit-log/' + id + '',
type: 'GET'
}, ajaxParams));
};
labp.auditing.auditLogs.auditLog.getList = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/audit-log' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'httpMethod', value: input.httpMethod }, { name: 'url', value: input.url }, { name: 'userId', value: input.userId }, { name: 'userName', value: input.userName }, { name: 'applicationName', value: input.applicationName }, { name: 'correlationId', value: input.correlationId }, { name: 'clientId', value: input.clientId }, { name: 'clientIpAddress', value: input.clientIpAddress }, { name: 'maxExecutionDuration', value: input.maxExecutionDuration }, { name: 'minExecutionDuration', value: input.minExecutionDuration }, { name: 'hasException', value: input.hasException }, { name: 'httpStatusCode', value: input.httpStatusCode }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};
})();
// controller labp.auditing.auditLogs.entityChanges
(function(){
abp.utils.createNamespace(window, 'labp.auditing.auditLogs.entityChanges');
labp.auditing.auditLogs.entityChanges.get = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/entity-changes/' + id + '',
type: 'GET'
}, ajaxParams));
};
labp.auditing.auditLogs.entityChanges.getList = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/entity-changes' + abp.utils.buildQueryString([{ name: 'auditLogId', value: input.auditLogId }, { name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'changeType', value: input.changeType }, { name: 'entityId', value: input.entityId }, { name: 'entityTypeFullName', value: input.entityTypeFullName }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};
labp.auditing.auditLogs.entityChanges.getWithUsernameAsyncById = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/entity-changes/with-username/' + id + '',
type: 'GET'
}, ajaxParams));
};
labp.auditing.auditLogs.entityChanges.getWithUsernameAsyncByInput = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/entity-changes/with-username' + abp.utils.buildQueryString([{ name: 'entityId', value: input.entityId }, { name: 'entityTypeFullName', value: input.entityTypeFullName }]) + '',
type: 'GET'
}, ajaxParams));
};
})();
// controller labp.auditing.logging.log
(function(){
abp.utils.createNamespace(window, 'labp.auditing.logging.log');
labp.auditing.logging.log.get = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/logging/' + id + '',
type: 'GET'
}, ajaxParams));
};
labp.auditing.logging.log.getList = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/logging' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'level', value: input.level }, { name: 'machineName', value: input.machineName }, { name: 'environment', value: input.environment }, { name: 'application', value: input.application }, { name: 'context', value: input.context }, { name: 'requestId', value: input.requestId }, { name: 'requestPath', value: input.requestPath }, { name: 'correlationId', value: input.correlationId }, { name: 'processId', value: input.processId }, { name: 'threadId', value: input.threadId }, { name: 'hasException', value: input.hasException }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};
})();
// controller labp.auditing.securityLogs.securityLog
(function(){
abp.utils.createNamespace(window, 'labp.auditing.securityLogs.securityLog');
labp.auditing.securityLogs.securityLog['delete'] = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/security-log/' + id + '',
type: 'DELETE',
dataType: null
}, ajaxParams));
};
labp.auditing.securityLogs.securityLog.deleteMany = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/security-log/bulk',
type: 'DELETE',
dataType: null,
data: JSON.stringify(input)
}, ajaxParams));
};
labp.auditing.securityLogs.securityLog.get = function(id, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/security-log/' + id + '',
type: 'GET'
}, ajaxParams));
};
labp.auditing.securityLogs.securityLog.getList = function(input, ajaxParams) {
return abp.ajax($.extend(true, {
url: abp.appPath + 'api/auditing/security-log' + abp.utils.buildQueryString([{ name: 'startTime', value: input.startTime }, { name: 'endTime', value: input.endTime }, { name: 'applicationName', value: input.applicationName }, { name: 'identity', value: input.identity }, { name: 'actionName', value: input.actionName }, { name: 'userId', value: input.userId }, { name: 'userName', value: input.userName }, { name: 'clientId', value: input.clientId }, { name: 'correlationId', value: input.correlationId }, { name: 'sorting', value: input.sorting }, { name: 'skipCount', value: input.skipCount }, { name: 'maxResultCount', value: input.maxResultCount }]) + '',
type: 'GET'
}, ajaxParams));
};
})();
})();
Loading…
Cancel
Save