Browse Source

Merge pull request #973 from colinin/rel-8.2.0

Rel 8.2.0
pull/988/head
yx lin 1 year ago
committed by GitHub
parent
commit
b49d2a891d
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 2
      .github/workflows/publish.yml
  2. 4
      .github/workflows/release.yml
  3. 22
      Directory.Packages.props
  4. 2
      apps/vue/src/api/abp/localization/index.ts
  5. 23
      apps/vue/src/api/account/profiles/index.ts
  6. 5
      apps/vue/src/api/account/profiles/model/index.ts
  7. 2
      apps/vue/src/api/auditing/security-logs/index.ts
  8. 2
      apps/vue/src/api/identity/claims/index.ts
  9. 2
      apps/vue/src/api/identity/organization-units/index.ts
  10. 27
      apps/vue/src/api/identity/sessions/index.ts
  11. 16
      apps/vue/src/api/identity/sessions/model/index.ts
  12. 2
      apps/vue/src/api/localization/languages/index.ts
  13. 2
      apps/vue/src/api/messages/friends/index.ts
  14. 2
      apps/vue/src/api/messages/groups/index.ts
  15. 4
      apps/vue/src/api/multi-tenancy/tenants/index.ts
  16. 74
      apps/vue/src/layouts/default/header/components/notify/NoticeList.vue
  17. 74
      apps/vue/src/layouts/default/header/components/notify/index.vue
  18. 13
      apps/vue/src/layouts/default/header/components/notify/useNotifications.ts
  19. 16
      apps/vue/src/layouts/default/header/components/user-dropdown/index.vue
  20. 49
      apps/vue/src/views/account/security-logs/index.vue
  21. 141
      apps/vue/src/views/account/sessions/index.vue
  22. 150
      apps/vue/src/views/identity/user/components/SessionModal.vue
  23. 13
      apps/vue/src/views/identity/user/components/UserTable.vue
  24. 1
      apps/vue/types/abp.d.ts
  25. 248
      aspnet-core/LINGYUN.MicroService.All.sln
  26. 63
      aspnet-core/LINGYUN.MicroService.SingleProject.sln
  27. 17
      aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln
  28. 16
      aspnet-core/LINGYUN.MicroService.Workflow.sln
  29. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN.Abp.AuditLogging.Elasticsearch.csproj
  30. 11
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AbpAuditLoggingElasticsearchModule.cs
  31. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AbpAuditLoggingElasticsearchOptions.cs
  32. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AuditLogInfoToAuditLogConverter.cs
  33. 17
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs
  34. 15
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchSecurityLogManager.cs
  35. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IAuditLogInfoToAuditLogConverter.cs
  36. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IIndexInitializer.cs
  37. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IIndexNameNormalizer.cs
  38. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IndexInitializer.cs
  39. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IndexInitializerService.cs
  40. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IndexNameNormalizer.cs
  41. 5
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN.Abp.AuditLogging.EntityFrameworkCore.csproj
  42. 13
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreModule.cs
  43. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AbpAuditingMapperProfile.cs
  44. 19
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AuditLogManager.cs
  45. 15
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/SecurityLogManager.cs
  46. 9
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN.Abp.AuditLogging.csproj
  47. 11
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AbpAuditLoggingModule.cs
  48. 64
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AuditLog.cs
  49. 9
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AuditLogAction.cs
  50. 9
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AuditingStore.cs
  51. 47
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultAuditLogManager.cs
  52. 39
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultEntityChangeStore.cs
  53. 49
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultSecurityLogManager.cs
  54. 13
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/EntityChange.cs
  55. 7
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/EntityChangeWithUsername.cs
  56. 13
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/EntityPropertyChange.cs
  57. 47
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IAuditLogManager.cs
  58. 19
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IEntityChangeStore.cs
  59. 47
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/ISecurityLogManager.cs
  60. 25
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/SecurityLog.cs
  61. 9
      aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/SecurityLogStore.cs
  62. 5
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/LINGYUN.Abp.Authentication.QQ.csproj
  63. 17
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/LINGYUN/Abp/Authentication/QQ/AbpQQClaimTypes.cs
  64. 13
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/Microsoft/AspNetCore/Authentication/QQ/QQConnectOAuthHandler.cs
  65. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/Microsoft/AspNetCore/Authentication/QQ/QQConnectOAuthOptions.cs
  66. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/Microsoft/AspNetCore/Authentication/QQAuthenticationExtensions.cs
  67. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/System/BytesExtensions.cs
  68. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/System/StringExtensions.cs
  69. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/System/Text/Json/JsonElementExtensions.cs
  70. 5
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/LINGYUN.Abp.Authentication.WeChat.csproj
  71. 13
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChat/Official/WeChatOfficialOAuthHandler.cs
  72. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChat/Official/WeChatOfficialOAuthOptions.cs
  73. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChat/Official/WeChatOfficialStateCacheItem.cs
  74. 7
      aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChatAuthenticationExtensions.cs
  75. 9
      aspnet-core/framework/authorization/LINGYUN.Abp.Authorization.OrganizationUnits/LINGYUN.Abp.Authorization.OrganizationUnits.csproj
  76. 2
      aspnet-core/framework/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj
  77. 5
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj
  78. 11
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AbpAliyunSettingManagementModule.cs
  79. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingAppService.cs
  80. 13
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingController.cs
  81. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingPermissionDefinitionProvider.cs
  82. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingPermissionNames.cs
  83. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/IAliyunSettingAppService.cs
  84. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN.Abp.Aliyun.csproj
  85. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AbpAliyunException.cs
  86. 11
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AbpAliyunModule.cs
  87. 9
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AcsClientFactory.cs
  88. 9
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AliyunBasicSessionCredentialsCacheItem.cs
  89. 31
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AliyunClientFactory.cs
  90. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/IAcsClientFactory.cs
  91. 9
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Localization/AliyunResource.cs
  92. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingNames.cs
  93. 7
      aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingProvider.cs
  94. 7
      aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN.Abp.BlobStoring.Tencent.csproj
  95. 7
      aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/DefaultTencentBlobNameCalculator.cs
  96. 7
      aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/ITencentBlobNameCalculator.cs
  97. 7
      aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobContainerConfigurationExtensions.cs
  98. 7
      aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobNamingNormalizer.cs
  99. 7
      aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobProviderConfiguration.cs
  100. 7
      aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobProviderConfigurationNames.cs

2
.github/workflows/publish.yml

@ -2,7 +2,7 @@ name: "Publish"
on:
push:
branches: [ rel-8.1.3 ]
branches: [ rel-8.2.0 ]
env:
DOTNET_VERSION: "8.0.200"

4
.github/workflows/release.yml

@ -2,7 +2,7 @@ name: "Tagged Release"
on:
push:
branches: [ rel-8.1.3 ]
branches: [ rel-8.2.0 ]
jobs:
tagged-release:
@ -14,4 +14,4 @@ jobs:
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
automatic_release_tag: "8.1.3"
automatic_release_tag: "8.2.0"

22
Directory.Packages.props

@ -2,17 +2,16 @@
<PropertyGroup>
<DotNetCoreCAPPackageVersion>8.1.1</DotNetCoreCAPPackageVersion>
<ElsaPackageVersion>2.14.1</ElsaPackageVersion>
<VoloAbpPackageVersion>8.1.3</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>8.1.3</LINGYUNAbpPackageVersion>
<VoloAbpPackageVersion>8.2.0</VoloAbpPackageVersion>
<LINGYUNAbpPackageVersion>8.2.0</LINGYUNAbpPackageVersion>
<MicrosoftExtensionsPackageVersion>8.0.0</MicrosoftExtensionsPackageVersion>
<MicrosoftAspNetCorePackageVersion>8.0.0</MicrosoftAspNetCorePackageVersion>
<MicrosoftEntityFrameworkCorePackageVersion>8.0.0</MicrosoftEntityFrameworkCorePackageVersion>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<!-- Abp Framework -->
<ItemGroup>
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="3.0.5" />
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="3.2.0" />
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Account.Application.Contracts" Version="$(VoloAbpPackageVersion)" />
@ -133,10 +132,9 @@
<PackageVersion Include="Volo.Abp.Users.Domain.Shared" Version="$(VoloAbpPackageVersion)" />
<PackageVersion Include="Volo.Abp.Validation" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
<!-- .NET -->
<ItemGroup>
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="8.0.4" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="$(MicrosoftAspNetCorePackageVersion)" />
@ -152,9 +150,8 @@
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Options" Version="8.0.2" />
</ItemGroup>
<!-- Elsa -->
<ItemGroup>
<PackageVersion Include="Elsa" Version="$(ElsaPackageVersion)" />
@ -172,7 +169,6 @@
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" />
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" />
</ItemGroup>
<!-- DotNetCore.CAP -->
<ItemGroup>
<PackageVersion Include="DotNetCore.CAP" Version="$(DotNetCoreCAPPackageVersion)" />
@ -181,7 +177,6 @@
<PackageVersion Include="DotNetCore.CAP.OpenTelemetry" Version="$(DotNetCoreCAPPackageVersion)" />
<PackageVersion Include="DotNetCore.CAP.RabbitMQ" Version="$(DotNetCoreCAPPackageVersion)" />
</ItemGroup>
<!-- Serilog -->
<ItemGroup>
<PackageVersion Include="Serilog" Version="3.1.1" />
@ -198,7 +193,6 @@
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" />
<PackageVersion Include="Serilog.Sinks.File" Version="5.0.0" />
</ItemGroup>
<!-- Test -->
<ItemGroup>
<PackageVersion Include="coverlet.collector" Version="6.0.0" />
@ -210,13 +204,11 @@
<PackageVersion Include="xunit.extensibility.execution" Version="2.6.1" />
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.3" />
</ItemGroup>
<!-- Fody -->
<ItemGroup>
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" />
<PackageVersion Include="Fody" Version="6.8.0" />
</ItemGroup>
<!-- Other -->
<ItemGroup>
<PackageVersion Include="aliyun-net-sdk-core" Version="1.5.10" />
@ -228,7 +220,7 @@
<PackageVersion Include="DistributedLock.Core" Version="1.0.5" />
<PackageVersion Include="DistributedLock.Redis" Version="1.0.2" />
<PackageVersion Include="Hangfire.MySqlStorage" Version="2.0.3" />
<PackageVersion Include="HangFire.SqlServer" Version="1.8.6" />
<PackageVersion Include="HangFire.SqlServer" Version="1.8.14" />
<PackageVersion Include="IdentityModel" Version="6.2.0" />
<PackageVersion Include="JetBrains.Annotations" Version="2023.3.0" />
<PackageVersion Include="Markdig" Version="0.34.0" />
@ -236,6 +228,8 @@
<PackageVersion Include="NEST" Version="7.15.1" />
<PackageVersion Include="NRules" Version="0.9.2" />
<PackageVersion Include="Ocelot.Provider.Polly" Version="20.0.0" />
<PackageVersion Include="OpenIddict.Server.DataProtection" Version="5.5.0" />
<PackageVersion Include="OpenIddict.Validation.DataProtection" Version="5.5.0" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.8.1" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.8.1" />

2
apps/vue/src/api/abp/localization/index.ts

@ -5,7 +5,7 @@ export const GetAsyncByInput = (input: {
onlyDynamics?: boolean;
}) => {
return defHttp.get<ApplicationLocalizationDto>({
url: 'api/abp/application-localization"',
url: '/api/abp/application-localization"',
params: input,
});
};

23
apps/vue/src/api/account/profiles/index.ts

@ -12,7 +12,9 @@ import {
AuthenticatorDto,
VerifyAuthenticatorCodeInput,
AuthenticatorRecoveryCodeDto,
GetUserSessionsInput,
} from './model';
import { IdentitySessionDto } from '../../identity/sessions/model';
export const get = () => {
return defHttp.get<MyProfile>({
@ -93,3 +95,24 @@ export const resetAuthenticator = () => {
url: '/api/account/my-profile/reset-authenticator',
});
}
/**
*
* @param { GetUserSessionsInput } input
* @returns { Promise<PagedResultDto<IdentitySessionDto>> }
*/
export const getSessions = (input?: GetUserSessionsInput): Promise<PagedResultDto<IdentitySessionDto>> => {
return defHttp.get<PagedResultDto<IdentitySessionDto>>({
url: '/api/account/my-profile/sessions',
params: input,
});
};
/**
*
* @param { string } sessionId id
* @returns { Promise<void> }
*/
export const revokeSession = (sessionId: string): Promise<void> => {
return defHttp.delete<void>({
url: `/api/account/my-profile/sessions/${sessionId}/revoke`,
});
}

5
apps/vue/src/api/account/profiles/model/index.ts

@ -61,3 +61,8 @@ interface Profile extends ExtensibleObject, IHasConcurrencyStamp {
authenticatorCode: string;
}
export interface GetUserSessionsInput extends PagedAndSortedResultRequestDto {
device?: string;
clientId?: string;
}

2
apps/vue/src/api/auditing/security-logs/index.ts

@ -15,7 +15,7 @@ export const getById = (id: string) => {
export const getList = (input: GetSecurityLogPagedRequest) => {
return defHttp.get<PagedResultDto<SecurityLog>>({
url: 'api/auditing/security-log',
url: '/api/auditing/security-log',
params: input,
});
};

2
apps/vue/src/api/identity/claims/index.ts

@ -29,7 +29,7 @@ export const update = (id: string, input: UpdateIdentityClaimType) => {
export const getById = (id: string) => {
return defHttp.get<IdentityClaimType>({
url: `'/api/identity/claim-types/${id}'`,
url: `/api/identity/claim-types/${id}'`,
});
};

2
apps/vue/src/api/identity/organization-units/index.ts

@ -88,7 +88,7 @@ export const getAll = () => {
export const move = (id: string, parentId?: string) => {
return defHttp.put<void>({
url: `api/identity/organization-units/${id}/move`,
url: `/api/identity/organization-units/${id}/move`,
data: {
parentId: parentId,
},

27
apps/vue/src/api/identity/sessions/index.ts

@ -0,0 +1,27 @@
import { defHttp } from '/@/utils/http/axios';
import {
IdentitySessionDto,
GetUserSessionsInput
} from './model';
/**
*
* @param { GetUserSessionsInput } input
* @returns { Promise<PagedResultDto<IdentitySessionDto>> }
*/
export const getSessions = (input?: GetUserSessionsInput): Promise<PagedResultDto<IdentitySessionDto>> => {
return defHttp.get<PagedResultDto<IdentitySessionDto>>({
url: '/api/identity/sessions',
params: input,
});
};
/**
*
* @param { string } sessionId id
* @returns { Promise<void> }
*/
export const revokeSession = (sessionId: string): Promise<void> => {
return defHttp.delete<void>({
url: `/api/identity/sessions/${sessionId}/revoke`,
});
}

16
apps/vue/src/api/identity/sessions/model/index.ts

@ -0,0 +1,16 @@
export interface IdentitySessionDto extends EntityDto<string> {
sessionId: string;
device: string;
deviceInfo: string;
userId: string;
clientId?: string;
ipAddresses?: string;
signedIn: Date;
lastAccessed?: Date;
}
export interface GetUserSessionsInput extends PagedAndSortedResultRequestDto {
userId?: string;
device?: string;
clientId?: string;
}

2
apps/vue/src/api/localization/languages/index.ts

@ -16,7 +16,7 @@ export const getByName = (name: string) => {
export const create = (input: LanguageCreate) => {
return defHttp.post<Language>({
url: '/api/abp/localization/languages',
url: '/api/localization/languages',
data: input,
});
};

2
apps/vue/src/api/messages/friends/index.ts

@ -9,7 +9,7 @@ import {
export const create = (input: FriendCreateRequest) => {
return defHttp.post<void>({
url: 'api/im/my-friends',
url: '/api/im/my-friends',
data: input,
});
};

2
apps/vue/src/api/messages/groups/index.ts

@ -10,6 +10,6 @@ export const search = (input: GroupSearchRequest) => {
export const getById = (groupId: string) => {
return defHttp.get<Group>({
url: `'/api/im/groups/${groupId}`,
url: `/api/im/groups/${groupId}`,
});
};

4
apps/vue/src/api/multi-tenancy/tenants/index.ts

@ -3,12 +3,12 @@ import { FindTenantResult } from './model';
export const findTenantByName = (name: string) => {
return defHttp.get<FindTenantResult>({
url: `api/abp/multi-tenancy/tenants/by-name/${name}`
url: `/api/abp/multi-tenancy/tenants/by-name/${name}`
});
};
export const findTenantById = (id: string) => {
return defHttp.get<FindTenantResult>({
url: `api/abp/multi-tenancy/tenants/by-id/${id}`
url: `/api/abp/multi-tenancy/tenants/by-id/${id}`
});
};

74
apps/vue/src/layouts/default/header/components/notify/NoticeList.vue

@ -1,11 +1,11 @@
<template>
<a-list :class="prefixCls" bordered :pagination="getPagination">
<List :class="prefixCls" bordered :pagination="getPagination">
<template v-for="item in getData" :key="item.id">
<a-list-item class="list-item">
<a-list-item-meta>
<ListItem class="list-item">
<ListItemMeta>
<template #title>
<div class="title">
<a-typography-paragraph
<TypographyParagraph
@click="handleTitleClick(item)"
style="width: 100%; margin-bottom: 0 !important"
:style="{ cursor: isTitleClickable ? 'pointer' : '' }"
@ -18,22 +18,22 @@
:content="item.title"
/>
<div class="extra" v-if="item.extra">
<a-tag class="tag" :color="item.color">
<Tag class="tag" :color="item.color">
{{ item.extra }}
</a-tag>
</Tag>
</div>
</div>
</template>
<template #avatar>
<a-avatar v-if="item.avatar" class="avatar" :src="item.avatar" />
<Avatar v-if="item.avatar" class="avatar" :src="item.avatar" />
<span v-else> {{ item.avatar }}</span>
</template>
<template #description>
<div>
<div class="description" v-if="item.description">
<a-typography-paragraph
<TypographyParagraph
@click="handleContentClick(item)"
style="width: 100%; margin-bottom: 0 !important"
:style="{ cursor: isContentClickable ? 'pointer' : '' }"
@ -50,31 +50,28 @@
</div>
</div>
</template>
</a-list-item-meta>
</a-list-item>
</ListItemMeta>
</ListItem>
</template>
<template #footer>
<slot name="footer"></slot>
</template>
</a-list>
</List>
</template>
<script lang="ts">
import { computed, defineComponent, PropType, ref, watch, unref } from 'vue';
<script lang="ts" setup>
import { computed, PropType, ref, watchEffect, unref } from 'vue';
import { ListItem } from './data';
import { useDesign } from '/@/hooks/web/useDesign';
import { List, Avatar, Tag, Typography } from 'ant-design-vue';
import { NotificationContentType } from '/@/api/messages/notifications/model';
import { isNumber } from '/@/utils/is';
export default defineComponent({
components: {
[Avatar.name]: Avatar,
[List.name]: List,
[List.Item.name]: List.Item,
AListItemMeta: List.Item.Meta,
ATypographyParagraph: Typography.Paragraph,
[Tag.name]: Tag,
},
props: {
const TypographyParagraph = Typography.Paragraph;
const ListItem = List.Item;
const ListItemMeta = List.Item.Meta;
const emits = defineEmits(['update:currentPage']);
const props = defineProps({
list: {
type: Array as PropType<ListItem[]>,
default: () => [],
@ -100,10 +97,9 @@
},
onContentClick: {
type: Function as PropType<(Recordable) => void>,
},
},
emits: ['update:currentPage'],
setup(props, { emit }) {
}
});
const { prefixCls } = useDesign('header-notify-list');
const current = ref(props.currentPage || 1);
const getData = computed(() => {
@ -125,12 +121,9 @@
}
};
});
watch(
() => props.currentPage,
(v) => {
current.value = v;
},
);
watchEffect(() => {
current.value = props.currentPage;
});
const isTitleClickable = computed(() => !!props.onTitleClick);
const isContentClickable = computed(() => !!props.onContentClick);
const getPagination = computed(() => {
@ -145,7 +138,7 @@
current: unref(current),
onChange(page) {
current.value = page;
emit('update:currentPage', page);
emits('update:currentPage', page);
},
};
} else {
@ -160,19 +153,6 @@
function handleContentClick(item: ListItem) {
props.onContentClick && props.onContentClick(item);
}
return {
prefixCls,
getPagination,
getData,
getContent,
handleTitleClick,
isTitleClickable,
handleContentClick,
isContentClickable,
};
},
});
</script>
<style lang="less" scoped>
@prefix-cls: ~'@{namespace}-header-notify-list';

74
apps/vue/src/layouts/default/header/components/notify/index.vue

@ -1,6 +1,6 @@
<template>
<div :class="prefixCls">
<Badge :count="count" dot :numberStyle="numberStyle">
<Badge :count="count" dot :numberStyle="{}">
<BellOutlined @click="showDrawer" />
</Badge>
<Drawer
@ -39,44 +39,11 @@
</TabPane>
</Tabs>
</Drawer>
<!-- <Popover title="" trigger="click" :overlayClassName="`${prefixCls}__overlay`">
<Badge :count="count" dot :numberStyle="numberStyle">
<BellOutlined />
</Badge>
<template #content>
<Tabs>
<TabPane :key="notifierRef.key" :tab="notifierRef.name">
<NoticeList :list="notifierRef.list" @title-click="readNotifer" />
</TabPane>
<TabPane :key="messageRef.key" :tab="messageRef.name">
<NoticeList :list="messageRef.list">
<template #footer>
<ButtonGroup style="width: 100%">
<Button
:disabled="messageRef.list.length === 0"
style="width: 50%"
type="link"
@click="clearMessage"
>清空消息</Button
>
<Button style="width: 50%" type="link" @click="handleShowMessages"
>查看更多</Button
>
</ButtonGroup>
</template>
</NoticeList>
</TabPane>
<TabPane :key="tasksRef.key" :tab="tasksRef.name">
<NoticeList :list="tasksRef.list" />
</TabPane>
</Tabs>
</template>
</Popover> -->
</div>
</template>
<script lang="ts">
import { computed, defineComponent, ref } from 'vue';
import { Button, Drawer, Popover, Tabs, Badge } from 'ant-design-vue';
<script lang="ts" setup>
import { computed, ref } from 'vue';
import { Button, Drawer, Tabs, Badge } from 'ant-design-vue';
import { BellOutlined } from '@ant-design/icons-vue';
import NoticeList from './NoticeList.vue';
import { useGo } from '/@/hooks/web/usePage';
@ -85,19 +52,9 @@
import { useMessages } from './useMessages';
import { useNotifications } from './useNotifications';
export default defineComponent({
components: {
Button,
ButtonGroup: Button.Group,
Drawer,
Popover,
BellOutlined,
Tabs,
TabPane: Tabs.TabPane,
Badge,
NoticeList,
},
setup() {
const ButtonGroup = Button.Group;
const TabPane = Tabs.TabPane;
const { prefixCls } = useDesign('header-notify');
const go = useGo();
const open = ref(false);
@ -129,23 +86,6 @@
console.log('showDrawer');
open.value = true;
}
return {
prefixCls,
count,
numberStyle: {},
open,
showDrawer,
notifierRef,
readNotifer,
messageRef,
clearMessage,
tasksRef,
handleShowMessages,
handleShowNotifications,
};
},
});
</script>
<style lang="less">
@prefix-cls: ~'@{namespace}-header-notify';

13
apps/vue/src/layouts/default/header/components/notify/useNotifications.ts

@ -44,6 +44,10 @@ export function useNotifications() {
});
function onNotifyReceived(notificationInfo: NotificationInfo, notifer?: boolean) {
if (notificationInfo.type === NotificationType.ServiceCallback) {
emitter.emit(NotifyEventEnum.NOTIFICATIONS_SERVICE_CALLBACK, notificationInfo);
return;
}
const { data } = notificationInfo;
let title = data.extraProperties.title;
let message = data.extraProperties.message;
@ -83,17 +87,10 @@ export function useNotifications() {
contentType: notificationInfo.contentType,
};
if (notifer && notificationInfo.type !== NotificationType.ServiceCallback) {
_notification(notifier, notificationInfo.severity);
}
if (notificationInfo.type === NotificationType.ServiceCallback) {
emitter.emit(NotifyEventEnum.NOTIFICATIONS_SERVICE_CALLBACK, notificationInfo);
} else {
notifer && _notification(notifier, notificationInfo.severity);
emitter.emit(NotifyEventEnum.NOTIFICATIONS_RECEVIED, notificationInfo);
notifierRef.value.list.push(notifier);
}
}
function _notification(notifier: Notification, severity: NotificationSeverity) {

16
apps/vue/src/layouts/default/header/components/user-dropdown/index.vue

@ -26,6 +26,11 @@
:text="t('AbpAuditLogging.SecurityLog')"
icon="ant-design:security-scan-outlined"
/>
<MenuItem
key="sessions"
:text="t('AbpIdentity.IdentitySessions')"
icon="carbon:prompt-session"
/>
<MenuDivider />
<MenuItem
v-if="getUseLockPage"
@ -42,6 +47,7 @@
</template>
</Dropdown>
<LockAction @register="register" />
<SessionModal @register="registerSessionModal" />
<SecurityLogsModal @register="registerSecurityLogsModal" />
</template>
<script lang="ts">
@ -67,7 +73,7 @@
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
type MenuEvent = 'logout' | 'doc' | 'lock' | 'setting' | 'center' | 'security-logs';
type MenuEvent = 'logout' | 'doc' | 'lock' | 'setting' | 'center' | 'sessions' | 'security-logs';
export default defineComponent({
name: 'UserDropdown',
@ -77,6 +83,9 @@
MenuItem: createAsyncComponent(() => import('./DropMenuItem.vue')),
MenuDivider: Menu.Divider,
LockAction: createAsyncComponent(() => import('../lock/LockModal.vue')),
SessionModal: createAsyncComponent(
() => import('/@/views/account/sessions/index.vue'),
),
SecurityLogsModal: createAsyncComponent(
() => import('/@/views/account/security-logs/index.vue'),
),
@ -107,6 +116,7 @@
});
const [register, { openModal }] = useModal();
const [registerSessionModal, { openModal: openSessionModal }] = useModal();
const [registerSecurityLogsModal, { openModal: openSecurityLogsModal }] = useModal();
function handleLock() {
@ -140,6 +150,9 @@
case 'center':
go('/account/center');
break;
case 'sessions':
openSessionModal(true, {});
break;
case 'security-logs':
openSecurityLogsModal(true, {});
break;
@ -154,6 +167,7 @@
getShowDoc,
register,
getUseLockPage,
registerSessionModal,
registerSecurityLogsModal,
};
},

49
apps/vue/src/views/account/security-logs/index.vue

@ -9,45 +9,23 @@
:can-fullscreen="false"
:show-ok-btn="false"
>
<Card style="height: 100%">
<div :style="getContentStyle" ref="contentWrapRef">
<ScrollContainer ref="contentScrollRef">
<template v-for="securityLog in securityLogs" :key="securityLog.id">
<CardGrid>
<Form
layout="horizontal"
:colon="false"
:model="securityLog"
:labelCol="{ span: 4 }"
:wrapperCol="{ span: 16 }"
>
<FormItem labelAlign="left" :label="L('ApplicationName')">
<span>{{ securityLog.applicationName }}</span>
</FormItem>
<FormItem labelAlign="left" :label="L('Identity')">
<span>{{ securityLog.identity }}</span>
</FormItem>
<FormItem labelAlign="left" :label="L('Actions')">
<span>{{ securityLog.action }}</span>
</FormItem>
<FormItem labelAlign="left" :label="L('ClientId')">
<span>{{ securityLog.clientId }}</span>
</FormItem>
<FormItem labelAlign="left" :label="L('ClientIpAddress')">
<span>{{ securityLog.clientIpAddress }}</span>
</FormItem>
<FormItem labelAlign="left" :label="L('BrowserInfo')">
<span>{{ securityLog.browserInfo }}</span>
</FormItem>
<FormItem labelAlign="left" :label="L('CreationTime')">
<span>{{ formatToDateTime(securityLog.creationTime) }}</span>
</FormItem>
</Form>
</CardGrid>
<Card hoverable style="height: 100%; margin-bottom: 15px;">
<Descriptions bordered size="small" :column="1">
<DescriptionItem :label="L('ApplicationName')">{{ securityLog.applicationName }}</DescriptionItem>
<DescriptionItem :label="L('Identity')">{{ securityLog.identity }}</DescriptionItem>
<DescriptionItem :label="L('Actions')">{{ securityLog.action }}</DescriptionItem>
<DescriptionItem :label="L('ClientId')">{{ securityLog.clientId }}</DescriptionItem>
<DescriptionItem :label="L('ClientIpAddress')">{{ securityLog.clientIpAddress }}</DescriptionItem>
<DescriptionItem :label="L('BrowserInfo')">{{ formatToDateTime(securityLog.browserInfo) }}</DescriptionItem>
<DescriptionItem :label="L('CreationTime')">{{ formatToDateTime(securityLog.creationTime) }}</DescriptionItem>
</Descriptions>
</Card>
</template>
</ScrollContainer>
</div>
</Card>
<template #footer>
<APagination
ref="paginationRef"
@ -63,7 +41,7 @@
<script lang="ts" setup>
import type { CSSProperties } from 'vue';
import { computed, ref } from 'vue';
import { Card, Form, Pagination } from 'ant-design-vue';
import { Card, Descriptions, Pagination } from 'ant-design-vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { ScrollContainer } from '/@/components/Container';
import { useLocalization } from '/@/hooks/abp/useLocalization';
@ -74,9 +52,8 @@
import { formatPagedRequest } from '/@/utils/http/abp/helper';
import { formatToDateTime } from '/@/utils/dateUtil';
const CardGrid = Card.Grid;
const FormItem = Form.Item;
const APagination = Pagination;
const DescriptionItem = Descriptions.Item;
const props = defineProps({
autoContentHeight: {

141
apps/vue/src/views/account/sessions/index.vue

@ -0,0 +1,141 @@
<template>
<BasicModal
v-bind="$attrs"
@register="registerModal"
:width="800"
:height="500"
:title="L('IdentitySessions')"
:mask-closable="false"
:can-fullscreen="false"
:show-ok-btn="false"
>
<div :style="getContentStyle" ref="contentWrapRef" class="session">
<ScrollContainer ref="contentScrollRef">
<template v-for="identitySession in identitySessions" :key="identitySession.id">
<Card style="height: 100%">
<template #title>
<div class="session__tile">
<span>{{ identitySession.device }}</span>
<div style="padding-left: 5px;">
<Tag
v-if="identitySession.sessionId === abpStore.getApplication.currentUser.sessionId"
color="#87d068"
>{{ L('CurrentSession') }}</Tag>
</div>
</div>
</template>
<Descriptions bordered size="small" :column="1">
<DescriptionItem :label="L('DisplayName:SessionId')">{{ identitySession.sessionId }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:Device')">{{ identitySession.device }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:DeviceInfo')">{{ identitySession.deviceInfo }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:ClientId')">{{ identitySession.clientId }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:IpAddresses')">{{ identitySession.ipAddresses }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:SignedIn')">{{ formatToDateTime(identitySession.signedIn) }}</DescriptionItem>
<DescriptionItem v-if="identitySession.lastAccessed" :label="L('DisplayName:LastAccessed')">{{ formatToDateTime(identitySession.lastAccessed) }}</DescriptionItem>
</Descriptions>
<template #extra>
<Button
v-if="identitySession.sessionId !== abpStore.getApplication.currentUser.sessionId"
danger
@click="handleRevokeSession(identitySession)"
>{{ L('RevokeSession') }}</Button>
</template>
</Card>
</template>
</ScrollContainer>
</div>
<template #footer>
<APagination
ref="paginationRef"
:pageSizeOptions="['10', '25', '50', '100']"
:total="identitySessionTotal"
@change="fetchSessions"
@showSizeChange="fetchSessions"
/>
</template>
</BasicModal>
</template>
<script lang="ts" setup>
import type { CSSProperties } from 'vue';
import { computed, ref } from 'vue';
import { Button, Card, Descriptions, Pagination, Tag } from 'ant-design-vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { ScrollContainer } from '/@/components/Container';
import { useMessage } from '/@/hooks/web/useMessage';
import { useLocalization } from '/@/hooks/abp/useLocalization';
import { useContentHeight } from '/@/hooks/web/useContentHeight';
import { useAbpStoreWithOut } from '/@/store/modules/abp';
import { getSessions, revokeSession } from '/@/api/account/profiles';
import { IdentitySessionDto } from '/@/api/identity/sessions/model';
import { formatPagedRequest } from '/@/utils/http/abp/helper';
import { formatToDateTime } from '/@/utils/dateUtil';
const DescriptionItem = Descriptions.Item;
const APagination = Pagination;
const props = defineProps({
autoContentHeight: {
type: Boolean,
default: true,
},
});
const contentWrapRef = ref<any>();
const contentScrollRef = ref<any>();
const paginationRef = ref<any>();
const getContentHeight = computed(() => props.autoContentHeight);
const { contentHeight } = useContentHeight(getContentHeight, contentWrapRef, [paginationRef], []);
const getContentStyle = computed((): CSSProperties => {
return {
width: '100%',
height: `${contentHeight.value}px`,
};
});
const identitySessions = ref<IdentitySessionDto[]>([]);
const identitySessionTotal = ref(0);
const abpStore = useAbpStoreWithOut();
const { createConfirm, createMessage } = useMessage();
const { L } = useLocalization(['AbpIdentity', 'AbpUi']);
const [registerModal] = useModalInner(() => {
fetchSessions();
});
function fetchSessions(page: number = 1, pageSize: number = 10) {
const request = {
skipCount: page,
maxResultCount: pageSize,
};
formatPagedRequest(request);
getSessions({
skipCount: request.skipCount,
maxResultCount: request.maxResultCount,
}).then((res) => {
identitySessions.value = res.items;
identitySessionTotal.value = res.totalCount;
});
}
function handleRevokeSession(session: IdentitySessionDto) {
createConfirm({
iconType: 'warning',
title: L('AreYouSure'),
content: L('SessionWillBeRevokedMessage'),
onOk: async () => {
await revokeSession(session.sessionId);
createMessage.success(L('SuccessfullyRevoked'));
fetchSessions();
},
});
}
</script>
<style lang="less" scoped>
.session {
.session__tile {
display: flex;
flex-direction: row;
}
}
</style>

150
apps/vue/src/views/identity/user/components/SessionModal.vue

@ -0,0 +1,150 @@
<template>
<BasicModal
v-bind="$attrs"
@register="registerModal"
:width="800"
:height="500"
:title="L('IdentitySessions')"
:mask-closable="false"
:can-fullscreen="false"
:show-ok-btn="false"
>
<div v-if="identitySessions.length <= 0">
<Empty />
</div>
<div v-else :style="getContentStyle" ref="contentWrapRef" class="session">
<ScrollContainer ref="contentScrollRef">
<template v-for="identitySession in identitySessions" :key="identitySession.id">
<Card style="height: 100%">
<template #title>
<div class="session__tile">
<span>{{ identitySession.device }}</span>
<div style="padding-left: 5px;">
<Tag
v-if="identitySession.sessionId === abpStore.getApplication.currentUser.sessionId"
color="#87d068"
>{{ L('CurrentSession') }}</Tag>
</div>
</div>
</template>
<Descriptions bordered size="small" :column="1">
<DescriptionItem :label="L('DisplayName:SessionId')">{{ identitySession.sessionId }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:Device')">{{ identitySession.device }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:DeviceInfo')">{{ identitySession.deviceInfo }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:ClientId')">{{ identitySession.clientId }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:IpAddresses')">{{ identitySession.ipAddresses }}</DescriptionItem>
<DescriptionItem :label="L('DisplayName:SignedIn')">{{ formatToDateTime(identitySession.signedIn) }}</DescriptionItem>
<DescriptionItem v-if="identitySession.lastAccessed" :label="L('DisplayName:LastAccessed')">{{ formatToDateTime(identitySession.lastAccessed) }}</DescriptionItem>
</Descriptions>
<template #extra>
<Button
v-auth="['AbpIdentity.IdentitySessions.Revoke']"
v-if="identitySession.sessionId !== abpStore.getApplication.currentUser.sessionId"
danger
@click="handleRevokeSession(identitySession)"
>{{ L('RevokeSession') }}</Button>
</template>
</Card>
</template>
</ScrollContainer>
</div>
<template #footer>
<APagination
v-if="identitySessions.length > 0"
ref="paginationRef"
:pageSizeOptions="['10', '25', '50', '100']"
:total="identitySessionTotal"
@change="fetchSessions"
@showSizeChange="fetchSessions"
/>
</template>
</BasicModal>
</template>
<script lang="ts" setup>
import type { CSSProperties } from 'vue';
import { computed, ref } from 'vue';
import { Button, Card, Descriptions, Empty, Pagination, Tag } from 'ant-design-vue';
import { BasicModal, useModalInner } from '/@/components/Modal';
import { ScrollContainer } from '/@/components/Container';
import { useMessage } from '/@/hooks/web/useMessage';
import { useLocalization } from '/@/hooks/abp/useLocalization';
import { useContentHeight } from '/@/hooks/web/useContentHeight';
import { useAbpStoreWithOut } from '/@/store/modules/abp';
import { getSessions, revokeSession } from '/@/api/identity/sessions';
import { IdentitySessionDto } from '/@/api/identity/sessions/model';
import { formatPagedRequest } from '/@/utils/http/abp/helper';
import { formatToDateTime } from '/@/utils/dateUtil';
const DescriptionItem = Descriptions.Item;
const APagination = Pagination;
const props = defineProps({
autoContentHeight: {
type: Boolean,
default: true,
},
});
const userId = ref('');
const contentWrapRef = ref<any>();
const contentScrollRef = ref<any>();
const paginationRef = ref<any>();
const getContentHeight = computed(() => props.autoContentHeight);
const { contentHeight } = useContentHeight(getContentHeight, contentWrapRef, [paginationRef], []);
const getContentStyle = computed((): CSSProperties => {
return {
width: '100%',
height: `${contentHeight.value}px`,
};
});
const identitySessions = ref<IdentitySessionDto[]>([]);
const identitySessionTotal = ref(0);
const abpStore = useAbpStoreWithOut();
const { createConfirm, createMessage } = useMessage();
const { L } = useLocalization(['AbpIdentity', 'AbpUi']);
const [registerModal] = useModalInner((data: { userId: string }) => {
userId.value = data.userId;
identitySessions.value = [];
fetchSessions();
});
function fetchSessions(page: number = 1, pageSize: number = 10) {
const request = {
skipCount: page,
maxResultCount: pageSize,
};
formatPagedRequest(request);
getSessions({
userId: userId.value,
skipCount: request.skipCount,
maxResultCount: request.maxResultCount,
}).then((res) => {
identitySessions.value = res.items;
identitySessionTotal.value = res.totalCount;
});
}
function handleRevokeSession(session: IdentitySessionDto) {
createConfirm({
iconType: 'warning',
title: L('AreYouSure'),
content: L('SessionWillBeRevokedMessage'),
onOk: async () => {
await revokeSession(session.sessionId);
createMessage.success(L('SuccessfullyRevoked'));
fetchSessions();
},
});
}
</script>
<style lang="less" scoped>
.session {
.session__tile {
display: flex;
flex-direction: row;
}
}
</style>

13
apps/vue/src/views/identity/user/components/UserTable.vue

@ -57,6 +57,11 @@
ifShow: !lockEnd(record),
onClick: showLockModal.bind(null, record.id),
},
{
auth: 'AbpIdentity.IdentitySessions',
label: L('IdentitySessions'),
onClick: handleShowSessionModal.bind(null, record),
},
{
auth: 'AbpIdentity.Users.Update',
label: L('UnLock'),
@ -90,6 +95,7 @@
</template>
</BasicTable>
<UserModal @register="registerModal" @change="reloadTable" />
<SessionModal @register="registerSessionModal" />
<PermissionModal @register="registerPermissionModal" />
<PasswordModal @register="registerPasswordModal" />
<ClaimModal
@ -129,11 +135,13 @@
updateClaim,
deleteClaim,
} from '/@/api/identity/users';
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
import UserModal from './UserModal.vue';
import PasswordModal from './PasswordModal.vue';
import LockModal from './LockModal.vue';
import MenuModal from '../../components/MenuModal.vue';
import ClaimModal from '../../components/ClaimModal.vue';
const SessionModal = createAsyncComponent(() => import('./SessionModal.vue'));
const emits = defineEmits(['change']);
@ -146,6 +154,7 @@
const { registerLockModal, showLockModal, handleUnLock } = useLock({ emit: emits });
const { registerPasswordModal, showPasswordModal } = usePassword(nullFormElRef);
const [registerClaimModal, { openModal: openClaimModal }] = useModal();
const [registerSessionModal, { openModal: openSessionModal }] = useModal();
const [registerMenuModal, { openModal: openMenuModal, closeModal: closeMenuModal }] = useModal();
const { registerModel: registerPermissionModal, showPermissionModal } = usePermissionModal();
@ -188,4 +197,8 @@
function handleShowClaims(record) {
openClaimModal(true, { id: record.id });
}
function handleShowSessionModal(record) {
openSessionModal(true, { userId: record.id });
}
</script>

1
apps/vue/types/abp.d.ts

@ -110,6 +110,7 @@ declare interface CurrentUser {
phoneNumber?: string;
phoneNumberVerified: boolean;
roles: string[];
sessionId?: string;
}
type SimpleStateCheckerResult<TState extends IHasSimpleStateCheckers<TState>> = Recordable<

248
aspnet-core/LINGYUN.MicroService.All.sln

@ -742,73 +742,21 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OpenApi.OpenIdd
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.TextTemplating.Scriban", "modules\text-templating\LINGYUN.Abp.TextTemplating.Scriban\LINGYUN.Abp.TextTemplating.Scriban.csproj", "{15482834-9242-4D20-9736-9DA571A9A83A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{8A255A72-50FC-460E-9897-FA53F455580B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{8A255A72-50FC-460E-9897-FA53F455580B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WeChat.Work.Common", "framework\wechat\LINGYUN.Abp.WeChat.Work.Common\LINGYUN.Abp.WeChat.Work.Common.csproj", "{46038910-8EDD-4822-8768-097B7D276FED}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.WeChat.Work.Common", "framework\wechat\LINGYUN.Abp.WeChat.Work.Common\LINGYUN.Abp.WeChat.Work.Common.csproj", "{CED33625-A034-475B-A4C0-A4E7D1BADD10}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.TaskManagement.Domain.Shared", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain.Shared\LINGYUN.Abp.TaskManagement.Domain.Shared.csproj", "{332F2031-6B67-4199-8BA4-317679D2FFF8}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{E3BA2413-5755-4F61-9A7C-5D49AE9E7016}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.BackgroundTasks", "modules\task-management\LINGYUN.Abp.BackgroundTasks\LINGYUN.Abp.BackgroundTasks.csproj", "{C8138D8C-BF2B-41CB-BEA2-3ACC5E70E306}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{BF85DB7F-70C2-4804-AA57-FACE204981DA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.BackgroundTasks.Quartz", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Quartz\LINGYUN.Abp.BackgroundTasks.Quartz.csproj", "{FF53669D-560C-4791-BE9A-28231C15FA4E}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.Session", "modules\identityServer\LINGYUN.Abp.IdentityServer.Session\LINGYUN.Abp.IdentityServer.Session.csproj", "{893F7376-0913-43DC-AD3D-40AF5B8F9E3B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.BackgroundTasks.DistributedLocking", "modules\task-management\LINGYUN.Abp.BackgroundTasks.DistributedLocking\LINGYUN.Abp.BackgroundTasks.DistributedLocking.csproj", "{2F8BB49E-92E5-4468-8656-BD4BC03FA505}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.AspNetCore.Session", "modules\identity\LINGYUN.Abp.Identity.AspNetCore.Session\LINGYUN.Abp.Identity.AspNetCore.Session.csproj", "{8826831D-8733-473A-B47B-A30C3732B13D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.BackgroundTasks.ExceptionHandling", "modules\task-management\LINGYUN.Abp.BackgroundTasks.ExceptionHandling\LINGYUN.Abp.BackgroundTasks.ExceptionHandling.csproj", "{5CAC42F1-58A4-4716-B8E5-E28042D1B612}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OpenIddict.AspNetCore.Session", "modules\openIddict\LINGYUN.Abp.OpenIddict.AspNetCore.Session\LINGYUN.Abp.OpenIddict.AspNetCore.Session.csproj", "{D1484DD3-BB0A-45A4-BED5-FFA132DE2E72}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.TaskManagement.EntityFrameworkCore", "modules\task-management\LINGYUN.Abp.TaskManagement.EntityFrameworkCore\LINGYUN.Abp.TaskManagement.EntityFrameworkCore.csproj", "{7D235CB7-EC8E-418F-978A-D2E6EA5F9E9A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.BackgroundTasks.Activities", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Activities\LINGYUN.Abp.BackgroundTasks.Activities.csproj", "{F78B0978-4ECF-4EA3-89A7-9492AE33CB30}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.TaskManagement.Domain", "modules\task-management\LINGYUN.Abp.TaskManagement.Domain\LINGYUN.Abp.TaskManagement.Domain.csproj", "{7C1A3331-D3D0-4CF0-A7D4-9E27F507AB02}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.TaskManagement.Application", "modules\task-management\LINGYUN.Abp.TaskManagement.Application\LINGYUN.Abp.TaskManagement.Application.csproj", "{DC4AB835-76CA-4439-9A14-473B3838F856}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.BackgroundTasks.EventBus", "modules\task-management\LINGYUN.Abp.BackgroundTasks.EventBus\LINGYUN.Abp.BackgroundTasks.EventBus.csproj", "{3310571F-1B30-49A4-AD24-0CF5C91C58F7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.TaskManagement.HttpApi", "modules\task-management\LINGYUN.Abp.TaskManagement.HttpApi\LINGYUN.Abp.TaskManagement.HttpApi.csproj", "{00C8A2BC-361D-4999-AEC3-BA4DD7991A9D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WebhooksManagement.Application.Contracts", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Application.Contracts\LINGYUN.Abp.WebhooksManagement.Application.Contracts.csproj", "{D60CF8FB-45BB-4F95-97EB-E1CE54B3105A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WebhooksManagement.Application", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Application\LINGYUN.Abp.WebhooksManagement.Application.csproj", "{7D83C686-7BF0-4037-B927-A502D55D01F8}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WebhooksManagement.Domain", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Domain\LINGYUN.Abp.WebhooksManagement.Domain.csproj", "{C7F7F9E2-F877-4658-BFEC-E47AE27B0139}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WebhooksManagement.Domain.Shared", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.Domain.Shared\LINGYUN.Abp.WebhooksManagement.Domain.Shared.csproj", "{2BC04B60-6959-47FF-8860-96AB51986584}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore\LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore.csproj", "{1752BAA2-4305-4655-99B4-6832E2CE6CAF}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WebhooksManagement.HttpApi", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.HttpApi\LINGYUN.Abp.WebhooksManagement.HttpApi.csproj", "{6F2A09CE-183E-4FBA-BB12-DD6105B90B00}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.WebhooksManagement.HttpApi.Client", "modules\webhooks\LINGYUN.Abp.WebhooksManagement.HttpApi.Client\LINGYUN.Abp.WebhooksManagement.HttpApi.Client.csproj", "{5E3E2B57-4BF1-45A7-9BAE-EDA000F27C80}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LY.MicroService.TaskManagement.HttpApi.Host", "services\LY.MicroService.TaskManagement.HttpApi.Host\LY.MicroService.TaskManagement.HttpApi.Host.csproj", "{7D760508-A5A8-44D9-8958-F5AD5F1B7949}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "task", "task", "{C1EFDD32-5524-4DDD-9925-88B6E3530994}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LY.MicroService.WebhooksManagement.HttpApi.Host", "services\LY.MicroService.WebhooksManagement.HttpApi.Host\LY.MicroService.WebhooksManagement.HttpApi.Host.csproj", "{2D3B6C77-465E-4D39-A83D-47E74F14D6D0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "webhooks", "webhooks", "{0107020D-22E5-4DDF-8A62-5DE850BA6C79}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LY.MicroService.WorkflowManagement.HttpApi.Host", "services\LY.MicroService.WorkflowManagement.HttpApi.Host\LY.MicroService.WorkflowManagement.HttpApi.Host.csproj", "{E8139252-2F6D-437D-97C7-6FB77C705E58}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflow", "workflow", "{74319001-6F4B-41D9-BE32-128EC12AB10B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.BackgroundTasks.Notifications", "modules\task-management\LINGYUN.Abp.BackgroundTasks.Notifications\LINGYUN.Abp.BackgroundTasks.Notifications.csproj", "{40FEF2F7-BB0E-4192-89EE-BDA98B3E4007}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LY.MicroService.TaskManagement.EntityFrameworkCore", "migrations\LY.MicroService.TaskManagement.EntityFrameworkCore\LY.MicroService.TaskManagement.EntityFrameworkCore.csproj", "{CE309DF2-FB96-4917-9DC6-14DC1DED7EED}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "task", "task", "{A922E0EE-5302-4E2B-9D84-0EC681416DA2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Webhooks.Identity", "modules\webhooks\LINGYUN.Abp.Webhooks.Identity\LINGYUN.Abp.Webhooks.Identity.csproj", "{27505FC3-2659-40CC-A9C7-0857FBECE099}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Webhooks.Saas", "modules\webhooks\LINGYUN.Abp.Webhooks.Saas\LINGYUN.Abp.Webhooks.Saas.csproj", "{1E6F9CF8-577C-45A7-A2E0-2BB3C40AFB9D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.Webhooks.EventBus", "modules\webhooks\LINGYUN.Abp.Webhooks.EventBus\LINGYUN.Abp.Webhooks.EventBus.csproj", "{65951546-93DB-4415-94C5-2B7B1E232A3E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LY.MicroService.WebhooksManagement.EntityFrameworkCore", "migrations\LY.MicroService.WebhooksManagement.EntityFrameworkCore\LY.MicroService.WebhooksManagement.EntityFrameworkCore.csproj", "{E41F9F32-7A18-485D-BAAE-D858F7EE72E7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "webhooks", "webhooks", "{E93F5D2E-14FF-47A0-B899-0E34AFDBCCBD}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Notifications", "modules\identity\LINGYUN.Abp.Identity.Notifications\LINGYUN.Abp.Identity.Notifications.csproj", "{54BBA043-317B-4A4F-B583-513D08BC25A7}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -1964,118 +1912,34 @@ Global
{8A255A72-50FC-460E-9897-FA53F455580B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8A255A72-50FC-460E-9897-FA53F455580B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8A255A72-50FC-460E-9897-FA53F455580B}.Release|Any CPU.Build.0 = Release|Any CPU
{46038910-8EDD-4822-8768-097B7D276FED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{46038910-8EDD-4822-8768-097B7D276FED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{46038910-8EDD-4822-8768-097B7D276FED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{46038910-8EDD-4822-8768-097B7D276FED}.Release|Any CPU.Build.0 = Release|Any CPU
{332F2031-6B67-4199-8BA4-317679D2FFF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{332F2031-6B67-4199-8BA4-317679D2FFF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{332F2031-6B67-4199-8BA4-317679D2FFF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{332F2031-6B67-4199-8BA4-317679D2FFF8}.Release|Any CPU.Build.0 = Release|Any CPU
{C8138D8C-BF2B-41CB-BEA2-3ACC5E70E306}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C8138D8C-BF2B-41CB-BEA2-3ACC5E70E306}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C8138D8C-BF2B-41CB-BEA2-3ACC5E70E306}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C8138D8C-BF2B-41CB-BEA2-3ACC5E70E306}.Release|Any CPU.Build.0 = Release|Any CPU
{FF53669D-560C-4791-BE9A-28231C15FA4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF53669D-560C-4791-BE9A-28231C15FA4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF53669D-560C-4791-BE9A-28231C15FA4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF53669D-560C-4791-BE9A-28231C15FA4E}.Release|Any CPU.Build.0 = Release|Any CPU
{2F8BB49E-92E5-4468-8656-BD4BC03FA505}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2F8BB49E-92E5-4468-8656-BD4BC03FA505}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2F8BB49E-92E5-4468-8656-BD4BC03FA505}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2F8BB49E-92E5-4468-8656-BD4BC03FA505}.Release|Any CPU.Build.0 = Release|Any CPU
{5CAC42F1-58A4-4716-B8E5-E28042D1B612}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5CAC42F1-58A4-4716-B8E5-E28042D1B612}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5CAC42F1-58A4-4716-B8E5-E28042D1B612}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5CAC42F1-58A4-4716-B8E5-E28042D1B612}.Release|Any CPU.Build.0 = Release|Any CPU
{7D235CB7-EC8E-418F-978A-D2E6EA5F9E9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D235CB7-EC8E-418F-978A-D2E6EA5F9E9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D235CB7-EC8E-418F-978A-D2E6EA5F9E9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D235CB7-EC8E-418F-978A-D2E6EA5F9E9A}.Release|Any CPU.Build.0 = Release|Any CPU
{F78B0978-4ECF-4EA3-89A7-9492AE33CB30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F78B0978-4ECF-4EA3-89A7-9492AE33CB30}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F78B0978-4ECF-4EA3-89A7-9492AE33CB30}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F78B0978-4ECF-4EA3-89A7-9492AE33CB30}.Release|Any CPU.Build.0 = Release|Any CPU
{7C1A3331-D3D0-4CF0-A7D4-9E27F507AB02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C1A3331-D3D0-4CF0-A7D4-9E27F507AB02}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C1A3331-D3D0-4CF0-A7D4-9E27F507AB02}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C1A3331-D3D0-4CF0-A7D4-9E27F507AB02}.Release|Any CPU.Build.0 = Release|Any CPU
{DC4AB835-76CA-4439-9A14-473B3838F856}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC4AB835-76CA-4439-9A14-473B3838F856}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC4AB835-76CA-4439-9A14-473B3838F856}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC4AB835-76CA-4439-9A14-473B3838F856}.Release|Any CPU.Build.0 = Release|Any CPU
{3310571F-1B30-49A4-AD24-0CF5C91C58F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3310571F-1B30-49A4-AD24-0CF5C91C58F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3310571F-1B30-49A4-AD24-0CF5C91C58F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3310571F-1B30-49A4-AD24-0CF5C91C58F7}.Release|Any CPU.Build.0 = Release|Any CPU
{00C8A2BC-361D-4999-AEC3-BA4DD7991A9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{00C8A2BC-361D-4999-AEC3-BA4DD7991A9D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{00C8A2BC-361D-4999-AEC3-BA4DD7991A9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{00C8A2BC-361D-4999-AEC3-BA4DD7991A9D}.Release|Any CPU.Build.0 = Release|Any CPU
{D60CF8FB-45BB-4F95-97EB-E1CE54B3105A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D60CF8FB-45BB-4F95-97EB-E1CE54B3105A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D60CF8FB-45BB-4F95-97EB-E1CE54B3105A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D60CF8FB-45BB-4F95-97EB-E1CE54B3105A}.Release|Any CPU.Build.0 = Release|Any CPU
{7D83C686-7BF0-4037-B927-A502D55D01F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D83C686-7BF0-4037-B927-A502D55D01F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D83C686-7BF0-4037-B927-A502D55D01F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D83C686-7BF0-4037-B927-A502D55D01F8}.Release|Any CPU.Build.0 = Release|Any CPU
{C7F7F9E2-F877-4658-BFEC-E47AE27B0139}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7F7F9E2-F877-4658-BFEC-E47AE27B0139}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C7F7F9E2-F877-4658-BFEC-E47AE27B0139}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7F7F9E2-F877-4658-BFEC-E47AE27B0139}.Release|Any CPU.Build.0 = Release|Any CPU
{2BC04B60-6959-47FF-8860-96AB51986584}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2BC04B60-6959-47FF-8860-96AB51986584}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2BC04B60-6959-47FF-8860-96AB51986584}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2BC04B60-6959-47FF-8860-96AB51986584}.Release|Any CPU.Build.0 = Release|Any CPU
{1752BAA2-4305-4655-99B4-6832E2CE6CAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1752BAA2-4305-4655-99B4-6832E2CE6CAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1752BAA2-4305-4655-99B4-6832E2CE6CAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1752BAA2-4305-4655-99B4-6832E2CE6CAF}.Release|Any CPU.Build.0 = Release|Any CPU
{6F2A09CE-183E-4FBA-BB12-DD6105B90B00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6F2A09CE-183E-4FBA-BB12-DD6105B90B00}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6F2A09CE-183E-4FBA-BB12-DD6105B90B00}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6F2A09CE-183E-4FBA-BB12-DD6105B90B00}.Release|Any CPU.Build.0 = Release|Any CPU
{5E3E2B57-4BF1-45A7-9BAE-EDA000F27C80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E3E2B57-4BF1-45A7-9BAE-EDA000F27C80}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5E3E2B57-4BF1-45A7-9BAE-EDA000F27C80}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E3E2B57-4BF1-45A7-9BAE-EDA000F27C80}.Release|Any CPU.Build.0 = Release|Any CPU
{7D760508-A5A8-44D9-8958-F5AD5F1B7949}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7D760508-A5A8-44D9-8958-F5AD5F1B7949}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7D760508-A5A8-44D9-8958-F5AD5F1B7949}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7D760508-A5A8-44D9-8958-F5AD5F1B7949}.Release|Any CPU.Build.0 = Release|Any CPU
{2D3B6C77-465E-4D39-A83D-47E74F14D6D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D3B6C77-465E-4D39-A83D-47E74F14D6D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D3B6C77-465E-4D39-A83D-47E74F14D6D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D3B6C77-465E-4D39-A83D-47E74F14D6D0}.Release|Any CPU.Build.0 = Release|Any CPU
{E8139252-2F6D-437D-97C7-6FB77C705E58}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8139252-2F6D-437D-97C7-6FB77C705E58}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E8139252-2F6D-437D-97C7-6FB77C705E58}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8139252-2F6D-437D-97C7-6FB77C705E58}.Release|Any CPU.Build.0 = Release|Any CPU
{40FEF2F7-BB0E-4192-89EE-BDA98B3E4007}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{40FEF2F7-BB0E-4192-89EE-BDA98B3E4007}.Debug|Any CPU.Build.0 = Debug|Any CPU
{40FEF2F7-BB0E-4192-89EE-BDA98B3E4007}.Release|Any CPU.ActiveCfg = Release|Any CPU
{40FEF2F7-BB0E-4192-89EE-BDA98B3E4007}.Release|Any CPU.Build.0 = Release|Any CPU
{CE309DF2-FB96-4917-9DC6-14DC1DED7EED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE309DF2-FB96-4917-9DC6-14DC1DED7EED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CE309DF2-FB96-4917-9DC6-14DC1DED7EED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE309DF2-FB96-4917-9DC6-14DC1DED7EED}.Release|Any CPU.Build.0 = Release|Any CPU
{27505FC3-2659-40CC-A9C7-0857FBECE099}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{27505FC3-2659-40CC-A9C7-0857FBECE099}.Debug|Any CPU.Build.0 = Debug|Any CPU
{27505FC3-2659-40CC-A9C7-0857FBECE099}.Release|Any CPU.ActiveCfg = Release|Any CPU
{27505FC3-2659-40CC-A9C7-0857FBECE099}.Release|Any CPU.Build.0 = Release|Any CPU
{1E6F9CF8-577C-45A7-A2E0-2BB3C40AFB9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E6F9CF8-577C-45A7-A2E0-2BB3C40AFB9D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1E6F9CF8-577C-45A7-A2E0-2BB3C40AFB9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E6F9CF8-577C-45A7-A2E0-2BB3C40AFB9D}.Release|Any CPU.Build.0 = Release|Any CPU
{65951546-93DB-4415-94C5-2B7B1E232A3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{65951546-93DB-4415-94C5-2B7B1E232A3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{65951546-93DB-4415-94C5-2B7B1E232A3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{65951546-93DB-4415-94C5-2B7B1E232A3E}.Release|Any CPU.Build.0 = Release|Any CPU
{E41F9F32-7A18-485D-BAAE-D858F7EE72E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E41F9F32-7A18-485D-BAAE-D858F7EE72E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E41F9F32-7A18-485D-BAAE-D858F7EE72E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E41F9F32-7A18-485D-BAAE-D858F7EE72E7}.Release|Any CPU.Build.0 = Release|Any CPU
{CED33625-A034-475B-A4C0-A4E7D1BADD10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CED33625-A034-475B-A4C0-A4E7D1BADD10}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CED33625-A034-475B-A4C0-A4E7D1BADD10}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CED33625-A034-475B-A4C0-A4E7D1BADD10}.Release|Any CPU.Build.0 = Release|Any CPU
{E3BA2413-5755-4F61-9A7C-5D49AE9E7016}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E3BA2413-5755-4F61-9A7C-5D49AE9E7016}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E3BA2413-5755-4F61-9A7C-5D49AE9E7016}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E3BA2413-5755-4F61-9A7C-5D49AE9E7016}.Release|Any CPU.Build.0 = Release|Any CPU
{BF85DB7F-70C2-4804-AA57-FACE204981DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF85DB7F-70C2-4804-AA57-FACE204981DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF85DB7F-70C2-4804-AA57-FACE204981DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF85DB7F-70C2-4804-AA57-FACE204981DA}.Release|Any CPU.Build.0 = Release|Any CPU
{893F7376-0913-43DC-AD3D-40AF5B8F9E3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{893F7376-0913-43DC-AD3D-40AF5B8F9E3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{893F7376-0913-43DC-AD3D-40AF5B8F9E3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{893F7376-0913-43DC-AD3D-40AF5B8F9E3B}.Release|Any CPU.Build.0 = Release|Any CPU
{8826831D-8733-473A-B47B-A30C3732B13D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8826831D-8733-473A-B47B-A30C3732B13D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8826831D-8733-473A-B47B-A30C3732B13D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8826831D-8733-473A-B47B-A30C3732B13D}.Release|Any CPU.Build.0 = Release|Any CPU
{D1484DD3-BB0A-45A4-BED5-FFA132DE2E72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D1484DD3-BB0A-45A4-BED5-FFA132DE2E72}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D1484DD3-BB0A-45A4-BED5-FFA132DE2E72}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D1484DD3-BB0A-45A4-BED5-FFA132DE2E72}.Release|Any CPU.Build.0 = Release|Any CPU
{54BBA043-317B-4A4F-B583-513D08BC25A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{54BBA043-317B-4A4F-B583-513D08BC25A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
{54BBA043-317B-4A4F-B583-513D08BC25A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{54BBA043-317B-4A4F-B583-513D08BC25A7}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -2435,39 +2299,13 @@ Global
{ED3DF100-C5DB-4334-A847-118922B28D95} = {3C7A8246-DE82-4330-8697-24EF1B1C515D}
{15482834-9242-4D20-9736-9DA571A9A83A} = {ABD89F39-62D9-439E-8662-BE4F36BFA04F}
{8A255A72-50FC-460E-9897-FA53F455580B} = {9D1302BE-3886-49F8-B0CD-35D2AC1E5A37}
{46038910-8EDD-4822-8768-097B7D276FED} = {DD9BE9E7-F6BF-4869-BCD2-82F5072BDA21}
{332F2031-6B67-4199-8BA4-317679D2FFF8} = {77ED7922-BF30-4436-8A85-78F812583913}
{C8138D8C-BF2B-41CB-BEA2-3ACC5E70E306} = {77ED7922-BF30-4436-8A85-78F812583913}
{FF53669D-560C-4791-BE9A-28231C15FA4E} = {77ED7922-BF30-4436-8A85-78F812583913}
{2F8BB49E-92E5-4468-8656-BD4BC03FA505} = {77ED7922-BF30-4436-8A85-78F812583913}
{5CAC42F1-58A4-4716-B8E5-E28042D1B612} = {77ED7922-BF30-4436-8A85-78F812583913}
{7D235CB7-EC8E-418F-978A-D2E6EA5F9E9A} = {77ED7922-BF30-4436-8A85-78F812583913}
{F78B0978-4ECF-4EA3-89A7-9492AE33CB30} = {77ED7922-BF30-4436-8A85-78F812583913}
{7C1A3331-D3D0-4CF0-A7D4-9E27F507AB02} = {77ED7922-BF30-4436-8A85-78F812583913}
{DC4AB835-76CA-4439-9A14-473B3838F856} = {77ED7922-BF30-4436-8A85-78F812583913}
{3310571F-1B30-49A4-AD24-0CF5C91C58F7} = {77ED7922-BF30-4436-8A85-78F812583913}
{00C8A2BC-361D-4999-AEC3-BA4DD7991A9D} = {77ED7922-BF30-4436-8A85-78F812583913}
{D60CF8FB-45BB-4F95-97EB-E1CE54B3105A} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{7D83C686-7BF0-4037-B927-A502D55D01F8} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{C7F7F9E2-F877-4658-BFEC-E47AE27B0139} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{2BC04B60-6959-47FF-8860-96AB51986584} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{1752BAA2-4305-4655-99B4-6832E2CE6CAF} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{6F2A09CE-183E-4FBA-BB12-DD6105B90B00} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{5E3E2B57-4BF1-45A7-9BAE-EDA000F27C80} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{C1EFDD32-5524-4DDD-9925-88B6E3530994} = {672E1170-7B18-474B-85C7-1961BF2A48AE}
{7D760508-A5A8-44D9-8958-F5AD5F1B7949} = {C1EFDD32-5524-4DDD-9925-88B6E3530994}
{0107020D-22E5-4DDF-8A62-5DE850BA6C79} = {672E1170-7B18-474B-85C7-1961BF2A48AE}
{74319001-6F4B-41D9-BE32-128EC12AB10B} = {672E1170-7B18-474B-85C7-1961BF2A48AE}
{2D3B6C77-465E-4D39-A83D-47E74F14D6D0} = {0107020D-22E5-4DDF-8A62-5DE850BA6C79}
{E8139252-2F6D-437D-97C7-6FB77C705E58} = {74319001-6F4B-41D9-BE32-128EC12AB10B}
{40FEF2F7-BB0E-4192-89EE-BDA98B3E4007} = {77ED7922-BF30-4436-8A85-78F812583913}
{A922E0EE-5302-4E2B-9D84-0EC681416DA2} = {C90A505F-000E-4AE4-8CCD-AB5FE5092B5C}
{CE309DF2-FB96-4917-9DC6-14DC1DED7EED} = {A922E0EE-5302-4E2B-9D84-0EC681416DA2}
{27505FC3-2659-40CC-A9C7-0857FBECE099} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{1E6F9CF8-577C-45A7-A2E0-2BB3C40AFB9D} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{65951546-93DB-4415-94C5-2B7B1E232A3E} = {13ACF670-F109-404E-B252-2FA34A4EA061}
{E93F5D2E-14FF-47A0-B899-0E34AFDBCCBD} = {C90A505F-000E-4AE4-8CCD-AB5FE5092B5C}
{E41F9F32-7A18-485D-BAAE-D858F7EE72E7} = {E93F5D2E-14FF-47A0-B899-0E34AFDBCCBD}
{CED33625-A034-475B-A4C0-A4E7D1BADD10} = {DD9BE9E7-F6BF-4869-BCD2-82F5072BDA21}
{E3BA2413-5755-4F61-9A7C-5D49AE9E7016} = {52B5D4F7-237B-4E0A-A167-68442164F70A}
{BF85DB7F-70C2-4804-AA57-FACE204981DA} = {52B5D4F7-237B-4E0A-A167-68442164F70A}
{893F7376-0913-43DC-AD3D-40AF5B8F9E3B} = {0439B173-F41E-4CE0-A44A-CCB70328F272}
{8826831D-8733-473A-B47B-A30C3732B13D} = {52B5D4F7-237B-4E0A-A167-68442164F70A}
{D1484DD3-BB0A-45A4-BED5-FFA132DE2E72} = {83E698F6-F8CD-4604-AB80-01A203389501}
{54BBA043-317B-4A4F-B583-513D08BC25A7} = {52B5D4F7-237B-4E0A-A167-68442164F70A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C95FDF91-16F2-4A8B-A4BE-0E62D1B66718}

63
aspnet-core/LINGYUN.MicroService.SingleProject.sln

@ -515,6 +515,24 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.BackgroundTasks
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Saas.Jobs", "modules\saas\LINGYUN.Abp.Saas.Jobs\LINGYUN.Abp.Saas.Jobs.csproj", "{8FA3ED81-19AB-4E0C-B36A-DF49131A2AB3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.SmsValidator", "modules\identityServer\LINGYUN.Abp.IdentityServer.SmsValidator\LINGYUN.Abp.IdentityServer.SmsValidator.csproj", "{7C1A8FF7-9FD1-41FC-856D-7A2DC6F7CE6F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.Portal", "modules\identityServer\LINGYUN.Abp.IdentityServer.Portal\LINGYUN.Abp.IdentityServer.Portal.csproj", "{986B92F6-A758-4D1F-8BC7-BFD13FF38591}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.WeChat.Work", "modules\identityServer\LINGYUN.Abp.IdentityServer.WeChat.Work\LINGYUN.Abp.IdentityServer.WeChat.Work.csproj", "{62D72C3E-5C57-439D-B7F7-5C55CC384A7A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{74156CFF-C236-4DED-B810-FAD8948F51CA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{63D08153-B43C-4884-8818-4AB42E1FEE75}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.AspNetCore.Session", "modules\identity\LINGYUN.Abp.Identity.AspNetCore.Session\LINGYUN.Abp.Identity.AspNetCore.Session.csproj", "{AF02868C-283E-4CB2-8866-3B0CAD1BB2DE}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.IdentityServer.Session", "modules\identityServer\LINGYUN.Abp.IdentityServer.Session\LINGYUN.Abp.IdentityServer.Session.csproj", "{F7459720-873C-4741-A991-A671CF03A6AF}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.OpenIddict.AspNetCore.Session", "modules\openIddict\LINGYUN.Abp.OpenIddict.AspNetCore.Session\LINGYUN.Abp.OpenIddict.AspNetCore.Session.csproj", "{382CAC43-EE1F-4DA3-B433-E23C3F58F44A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Notifications", "modules\identity\LINGYUN.Abp.Identity.Notifications\LINGYUN.Abp.Identity.Notifications.csproj", "{4634B421-36E6-4169-AA1A-11050902495F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -1349,6 +1367,42 @@ Global
{8FA3ED81-19AB-4E0C-B36A-DF49131A2AB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FA3ED81-19AB-4E0C-B36A-DF49131A2AB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FA3ED81-19AB-4E0C-B36A-DF49131A2AB3}.Release|Any CPU.Build.0 = Release|Any CPU
{7C1A8FF7-9FD1-41FC-856D-7A2DC6F7CE6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7C1A8FF7-9FD1-41FC-856D-7A2DC6F7CE6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C1A8FF7-9FD1-41FC-856D-7A2DC6F7CE6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C1A8FF7-9FD1-41FC-856D-7A2DC6F7CE6F}.Release|Any CPU.Build.0 = Release|Any CPU
{986B92F6-A758-4D1F-8BC7-BFD13FF38591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{986B92F6-A758-4D1F-8BC7-BFD13FF38591}.Debug|Any CPU.Build.0 = Debug|Any CPU
{986B92F6-A758-4D1F-8BC7-BFD13FF38591}.Release|Any CPU.ActiveCfg = Release|Any CPU
{986B92F6-A758-4D1F-8BC7-BFD13FF38591}.Release|Any CPU.Build.0 = Release|Any CPU
{62D72C3E-5C57-439D-B7F7-5C55CC384A7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{62D72C3E-5C57-439D-B7F7-5C55CC384A7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{62D72C3E-5C57-439D-B7F7-5C55CC384A7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{62D72C3E-5C57-439D-B7F7-5C55CC384A7A}.Release|Any CPU.Build.0 = Release|Any CPU
{74156CFF-C236-4DED-B810-FAD8948F51CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74156CFF-C236-4DED-B810-FAD8948F51CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74156CFF-C236-4DED-B810-FAD8948F51CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74156CFF-C236-4DED-B810-FAD8948F51CA}.Release|Any CPU.Build.0 = Release|Any CPU
{63D08153-B43C-4884-8818-4AB42E1FEE75}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{63D08153-B43C-4884-8818-4AB42E1FEE75}.Debug|Any CPU.Build.0 = Debug|Any CPU
{63D08153-B43C-4884-8818-4AB42E1FEE75}.Release|Any CPU.ActiveCfg = Release|Any CPU
{63D08153-B43C-4884-8818-4AB42E1FEE75}.Release|Any CPU.Build.0 = Release|Any CPU
{AF02868C-283E-4CB2-8866-3B0CAD1BB2DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF02868C-283E-4CB2-8866-3B0CAD1BB2DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF02868C-283E-4CB2-8866-3B0CAD1BB2DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF02868C-283E-4CB2-8866-3B0CAD1BB2DE}.Release|Any CPU.Build.0 = Release|Any CPU
{F7459720-873C-4741-A991-A671CF03A6AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F7459720-873C-4741-A991-A671CF03A6AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7459720-873C-4741-A991-A671CF03A6AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7459720-873C-4741-A991-A671CF03A6AF}.Release|Any CPU.Build.0 = Release|Any CPU
{382CAC43-EE1F-4DA3-B433-E23C3F58F44A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{382CAC43-EE1F-4DA3-B433-E23C3F58F44A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{382CAC43-EE1F-4DA3-B433-E23C3F58F44A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{382CAC43-EE1F-4DA3-B433-E23C3F58F44A}.Release|Any CPU.Build.0 = Release|Any CPU
{4634B421-36E6-4169-AA1A-11050902495F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4634B421-36E6-4169-AA1A-11050902495F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4634B421-36E6-4169-AA1A-11050902495F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4634B421-36E6-4169-AA1A-11050902495F}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -1600,6 +1654,15 @@ Global
{66A6E78D-E547-4DD7-9844-087FAB3D03C2} = {C22741F9-FC56-4AE3-B543-9F15C779D345}
{A99F5406-37DC-4677-9166-9BDE90C26CA6} = {D9C65C9D-8591-46DA-A3EE-419393E607AB}
{8FA3ED81-19AB-4E0C-B36A-DF49131A2AB3} = {0DF5AD76-AEEA-4052-A6CA-A44C24879F11}
{7C1A8FF7-9FD1-41FC-856D-7A2DC6F7CE6F} = {A3B6DFC3-5D27-496E-9AD6-C1035213F1DC}
{986B92F6-A758-4D1F-8BC7-BFD13FF38591} = {A3B6DFC3-5D27-496E-9AD6-C1035213F1DC}
{62D72C3E-5C57-439D-B7F7-5C55CC384A7A} = {A3B6DFC3-5D27-496E-9AD6-C1035213F1DC}
{74156CFF-C236-4DED-B810-FAD8948F51CA} = {D94D6AFE-20BD-4F21-8708-03F5E34F49FC}
{63D08153-B43C-4884-8818-4AB42E1FEE75} = {D94D6AFE-20BD-4F21-8708-03F5E34F49FC}
{AF02868C-283E-4CB2-8866-3B0CAD1BB2DE} = {D94D6AFE-20BD-4F21-8708-03F5E34F49FC}
{F7459720-873C-4741-A991-A671CF03A6AF} = {A3B6DFC3-5D27-496E-9AD6-C1035213F1DC}
{382CAC43-EE1F-4DA3-B433-E23C3F58F44A} = {7C714185-D3D9-4D94-B5CB-D857A0091F04}
{4634B421-36E6-4169-AA1A-11050902495F} = {D94D6AFE-20BD-4F21-8708-03F5E34F49FC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {711A43C0-A2F8-4E5C-9B9F-F2551E4B3FF1}

17
aspnet-core/LINGYUN.MicroService.WebhooksManagement.sln

@ -147,6 +147,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Security", "fra
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{047F892F-F8D2-4952-A1E9-93AA2B030F76}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{23E99204-F7C1-47BA-84CD-3C9D05210F4F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -381,6 +387,14 @@ Global
{047F892F-F8D2-4952-A1E9-93AA2B030F76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{047F892F-F8D2-4952-A1E9-93AA2B030F76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{047F892F-F8D2-4952-A1E9-93AA2B030F76}.Release|Any CPU.Build.0 = Release|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1}.Release|Any CPU.Build.0 = Release|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -454,6 +468,9 @@ Global
{0DFDAC71-BCB9-44CF-A44A-E8288E75246F} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{8F11DADB-557A-4ECF-BEBB-19AFA71998A1} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{047F892F-F8D2-4952-A1E9-93AA2B030F76} = {FB7A9794-06D2-42CF-939E-4626497B97BD}
{23E99204-F7C1-47BA-84CD-3C9D05210F4F} = {03B4B0AA-83CE-4E4B-9CE2-47369BF88B97}
{BF298DF5-BC1D-4DDD-A51E-8E9020D2C5F1} = {23E99204-F7C1-47BA-84CD-3C9D05210F4F}
{BE58649C-EA57-4DFC-8D25-54FDCB1943A1} = {23E99204-F7C1-47BA-84CD-3C9D05210F4F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {80ED12A5-C899-459F-A181-ADCC9D680DE5}

16
aspnet-core/LINGYUN.MicroService.Workflow.sln

@ -165,6 +165,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Security", "fra
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Claims.Mapping", "framework\security\LINGYUN.Abp.Claims.Mapping\LINGYUN.Abp.Claims.Mapping.csproj", "{1859E205-88DC-4E08-A0BD-55A045DCC495}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "identity", "identity", "{9C73D4E6-4408-4717-B51C-63C20321D4DA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session", "modules\identity\LINGYUN.Abp.Identity.Session\LINGYUN.Abp.Identity.Session.csproj", "{6ECF678D-6F3A-4084-8538-A86C1D67C703}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.Identity.Session.AspNetCore", "modules\identity\LINGYUN.Abp.Identity.Session.AspNetCore\LINGYUN.Abp.Identity.Session.AspNetCore.csproj", "{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -443,6 +449,14 @@ Global
{1859E205-88DC-4E08-A0BD-55A045DCC495}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1859E205-88DC-4E08-A0BD-55A045DCC495}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1859E205-88DC-4E08-A0BD-55A045DCC495}.Release|Any CPU.Build.0 = Release|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6ECF678D-6F3A-4084-8538-A86C1D67C703}.Release|Any CPU.Build.0 = Release|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -518,6 +532,8 @@ Global
{4D055853-DE80-4145-BB2F-33EB6B379F5E} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{E4783690-052A-4AB0-837E-BDBC77CC7EEC} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{1859E205-88DC-4E08-A0BD-55A045DCC495} = {6DA78E72-BA55-4ECF-97DB-6258174D3E2A}
{6ECF678D-6F3A-4084-8538-A86C1D67C703} = {9C73D4E6-4408-4717-B51C-63C20321D4DA}
{9FB5E943-7F6F-4281-9C00-E76284B4F1F3} = {9C73D4E6-4408-4717-B51C-63C20321D4DA}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {6BB7A5DE-DA12-44DC-BC9B-0F6CA524346F}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN.Abp.AuditLogging.Elasticsearch.csproj

@ -4,7 +4,12 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks>
<AssemblyName>LINGYUN.Abp.AuditLogging.Elasticsearch</AssemblyName>
<PackageId>LINGYUN.Abp.AuditLogging.Elasticsearch</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>

11
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AbpAuditLoggingElasticsearchModule.cs

@ -3,14 +3,14 @@ using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Json;
using Volo.Abp.Modularity;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
{
[DependsOn(
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
[DependsOn(
typeof(AbpAuditLoggingModule),
typeof(AbpElasticsearchModule),
typeof(AbpJsonModule))]
public class AbpAuditLoggingElasticsearchModule : AbpModule
{
public class AbpAuditLoggingElasticsearchModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
@ -18,5 +18,4 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
context.Services.AddHostedService<IndexInitializerService>();
}
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AbpAuditLoggingElasticsearchOptions.cs

@ -1,9 +1,9 @@
using Nest;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
public class AbpAuditLoggingElasticsearchOptions
{
public class AbpAuditLoggingElasticsearchOptions
{
public const string DefaultIndexPrefix = "auditlogging";
public string IndexPrefix { get; set; }
public IIndexSettings IndexSettings { get; set; }
@ -13,5 +13,4 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
IndexPrefix = DefaultIndexPrefix;
IndexSettings = new IndexSettings();
}
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/AuditLogInfoToAuditLogConverter.cs

@ -11,10 +11,10 @@ using Volo.Abp.Guids;
using Volo.Abp.Http;
using Volo.Abp.Json;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public class AuditLogInfoToAuditLogConverter : IAuditLogInfoToAuditLogConverter, ITransientDependency
{
public class AuditLogInfoToAuditLogConverter : IAuditLogInfoToAuditLogConverter, ITransientDependency
{
protected IGuidGenerator GuidGenerator { get; }
protected AbpExceptionHandlingOptions ExceptionHandlingOptions { get; }
protected IExceptionToErrorInfoConverter ExceptionToErrorInfoConverter { get; }
@ -111,5 +111,4 @@ namespace LINGYUN.Abp.AuditLogging
return Task.FromResult(auditLog);
}
}
}

17
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchAuditLogManager.cs

@ -13,11 +13,11 @@ using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Timing;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
[Dependency(ReplaceServices = true)]
public class ElasticsearchAuditLogManager : IAuditLogManager, ITransientDependency
{
[Dependency(ReplaceServices = true)]
public class ElasticsearchAuditLogManager : IAuditLogManager, ITransientDependency
{
private readonly AbpAuditingOptions _auditingOptions;
private readonly AbpElasticsearchOptions _elasticsearchOptions;
private readonly IIndexNameNormalizer _indexNameNormalizer;
@ -61,7 +61,7 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
int? minExecutionDuration = null,
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
var client = _clientFactory.Create();
@ -108,7 +108,7 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
var client = _clientFactory.Create();
@ -190,7 +190,7 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
public async virtual Task<string> SaveAsync(
AuditLogInfo auditInfo,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
if (!_auditingOptions.HideErrors)
{
@ -211,7 +211,7 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
protected async virtual Task<string> SaveLogAsync(
AuditLogInfo auditLogInfo,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
var client = _clientFactory.Create();
@ -369,5 +369,4 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
return _elasticsearchOptions.FieldCamelCase ? field.ToCamelCase() : field.ToPascalCase();
}
}
}

15
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/ElasticsearchSecurityLogManager.cs

@ -13,11 +13,11 @@ using Volo.Abp.Guids;
using Volo.Abp.SecurityLog;
using Volo.Abp.Timing;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
[Dependency(ReplaceServices = true)]
public class ElasticsearchSecurityLogManager : ISecurityLogManager, ITransientDependency
{
[Dependency(ReplaceServices = true)]
public class ElasticsearchSecurityLogManager : ISecurityLogManager, ITransientDependency
{
private readonly AbpSecurityLogOptions _securityLogOptions;
private readonly AbpElasticsearchOptions _elasticsearchOptions;
private readonly IIndexNameNormalizer _indexNameNormalizer;
@ -47,7 +47,7 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
public async virtual Task SaveAsync(
SecurityLogInfo securityLogInfo,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
// TODO: 框架不把这玩意儿放在 ISecurityLogManager?
if (!_securityLogOptions.IsEnabled)
@ -110,7 +110,7 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
string clientIpAddress = null,
string correlationId = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
var client = _clientFactory.Create();
@ -156,7 +156,7 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
string clientId = null,
string clientIpAddress = null,
string correlationId = null,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
var client = _clientFactory.Create();
@ -268,5 +268,4 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
return _elasticsearchOptions.FieldCamelCase ? field.ToCamelCase() : field.ToPascalCase();
}
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IAuditLogInfoToAuditLogConverter.cs

@ -1,10 +1,9 @@
using System.Threading.Tasks;
using Volo.Abp.Auditing;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public interface IAuditLogInfoToAuditLogConverter
{
public interface IAuditLogInfoToAuditLogConverter
{
Task<AuditLog> ConvertAsync(AuditLogInfo auditLogInfo);
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IIndexInitializer.cs

@ -1,9 +1,8 @@
using System.Threading.Tasks;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
public interface IIndexInitializer
{
public interface IIndexInitializer
{
Task InitializeAsync();
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IIndexNameNormalizer.cs

@ -1,7 +1,6 @@
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
public interface IIndexNameNormalizer
{
public interface IIndexNameNormalizer
{
string NormalizeIndex(string index);
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IndexInitializer.cs

@ -9,10 +9,10 @@ using Volo.Abp.Data;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Json;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
public class IndexInitializer : IIndexInitializer, ISingletonDependency
{
public class IndexInitializer : IIndexInitializer, ISingletonDependency
{
private readonly AbpJsonOptions _jsonOptions;
private readonly AbpAuditLoggingElasticsearchOptions _elasticsearchOptions;
private readonly IIndexNameNormalizer _nameNormalizer;
@ -103,5 +103,4 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
}
}
}
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IndexInitializerService.cs

@ -2,10 +2,10 @@
using System.Threading;
using System.Threading.Tasks;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
public class IndexInitializerService : BackgroundService
{
public class IndexInitializerService : BackgroundService
{
private readonly IIndexInitializer _indexInitializer;
public IndexInitializerService(IIndexInitializer indexInitializer)
@ -17,5 +17,4 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
{
await _indexInitializer.InitializeAsync();
}
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.Elasticsearch/LINGYUN/Abp/AuditLogging/Elasticsearch/IndexNameNormalizer.cs

@ -3,10 +3,10 @@ using System;
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
namespace LINGYUN.Abp.AuditLogging.Elasticsearch
namespace LINGYUN.Abp.AuditLogging.Elasticsearch;
public class IndexNameNormalizer : IIndexNameNormalizer, ISingletonDependency
{
public class IndexNameNormalizer : IIndexNameNormalizer, ISingletonDependency
{
private readonly ICurrentTenant _currentTenant;
private readonly AbpAuditLoggingElasticsearchOptions _options;
@ -28,5 +28,4 @@ namespace LINGYUN.Abp.AuditLogging.Elasticsearch
? index
: $"{_options.IndexPrefix}-{index}";
}
}
}

5
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN.Abp.AuditLogging.EntityFrameworkCore.csproj

@ -5,6 +5,11 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>LINGYUN.Abp.AuditLogging.EntityFrameworkCore</AssemblyName>
<PackageId>LINGYUN.Abp.AuditLogging.EntityFrameworkCore</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>

13
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AbpAuditLoggingEntityFrameworkCoreModule.cs

@ -2,16 +2,16 @@
using Volo.Abp.AutoMapper;
using Volo.Abp.Modularity;
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
{
[DependsOn(
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore;
[DependsOn(
typeof(Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule),
typeof(Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule))]
[DependsOn(
[DependsOn(
typeof(AbpAuditLoggingModule),
typeof(AbpAutoMapperModule))]
public class AbpAuditLoggingEntityFrameworkCoreModule : AbpModule
{
public class AbpAuditLoggingEntityFrameworkCoreModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAutoMapperObjectMapper<AbpAuditLoggingEntityFrameworkCoreModule>();
@ -21,5 +21,4 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
options.AddProfile<AbpAuditingMapperProfile>(validate: true);
});
}
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AbpAuditingMapperProfile.cs

@ -1,9 +1,9 @@
using AutoMapper;
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore;
public class AbpAuditingMapperProfile : Profile
{
public class AbpAuditingMapperProfile : Profile
{
public AbpAuditingMapperProfile()
{
CreateMap<Volo.Abp.AuditLogging.AuditLogAction, LINGYUN.Abp.AuditLogging.AuditLogAction>()
@ -17,5 +17,4 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
CreateMap<Volo.Abp.Identity.IdentitySecurityLog, LINGYUN.Abp.AuditLogging.SecurityLog>()
.MapExtraProperties();
}
}
}

19
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/AuditLogManager.cs

@ -12,11 +12,11 @@ using Volo.Abp.DependencyInjection;
using Volo.Abp.ObjectMapping;
using Volo.Abp.Uow;
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore;
[Dependency(ReplaceServices = true)]
public class AuditLogManager : IAuditLogManager, ITransientDependency
{
[Dependency(ReplaceServices = true)]
public class AuditLogManager : IAuditLogManager, ITransientDependency
{
protected IObjectMapper ObjectMapper { get; }
protected IAuditLogRepository AuditLogRepository { get; }
protected IUnitOfWorkManager UnitOfWorkManager { get; }
@ -57,13 +57,14 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
int? minExecutionDuration = null,
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
return await AuditLogRepository.GetCountAsync(
startTime,
endTime,
httpMethod,
url,
clientId,
userId,
userName,
applicationName,
@ -95,7 +96,7 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
var auditLogs = await AuditLogRepository.GetListAsync(
sorting,
@ -105,6 +106,7 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
endTime,
httpMethod,
url,
clientId,
userId,
userName,
applicationName,
@ -141,7 +143,7 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
public async virtual Task<string> SaveAsync(
AuditLogInfo auditInfo,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
if (!Options.HideErrors)
{
@ -162,7 +164,7 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
protected async virtual Task<string> SaveLogAsync(
AuditLogInfo auditInfo,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
using (var uow = UnitOfWorkManager.Begin(true))
{
@ -175,5 +177,4 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
return auditLog.Id.ToString();
}
}
}
}

15
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging.EntityFrameworkCore/LINGYUN/Abp/AuditLogging/EntityFrameworkCore/SecurityLogManager.cs

@ -11,11 +11,11 @@ using Volo.Abp.ObjectMapping;
using Volo.Abp.SecurityLog;
using Volo.Abp.Uow;
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore;
[Dependency(ReplaceServices = true)]
public class SecurityLogManager : ISecurityLogManager, ITransientDependency
{
[Dependency(ReplaceServices = true)]
public class SecurityLogManager : ISecurityLogManager, ITransientDependency
{
public ILogger<SecurityLogManager> Logger { get; set; }
protected IObjectMapper ObjectMapper { get; }
@ -42,7 +42,7 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
public async virtual Task SaveAsync(
SecurityLogInfo securityLogInfo,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
if (!SecurityLogOptions.IsEnabled)
{
@ -93,7 +93,7 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
string clientIpAddress = null,
string correlationId = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
var securityLogs = await IdentitySecurityLogRepository.GetListAsync(
sorting,
@ -126,7 +126,7 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
string clientId = null,
string clientIpAddress = null,
string correlationId = null,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
return await IdentitySecurityLogRepository.GetCountAsync(
startTime,
@ -140,5 +140,4 @@ namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore
correlationId,
cancellationToken);
}
}
}

9
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN.Abp.AuditLogging.csproj

@ -4,7 +4,14 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>LINGYUN.Abp.AuditLogging</AssemblyName>
<PackageId>LINGYUN.Abp.AuditLogging</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>

11
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AbpAuditLoggingModule.cs

@ -5,14 +5,14 @@ using Volo.Abp.ExceptionHandling;
using Volo.Abp.Guids;
using Volo.Abp.Modularity;
namespace LINGYUN.Abp.AuditLogging
{
[DependsOn(
namespace LINGYUN.Abp.AuditLogging;
[DependsOn(
typeof(AbpAuditingModule),
typeof(AbpGuidsModule),
typeof(AbpExceptionHandlingModule))]
public class AbpAuditLoggingModule : AbpModule
{
public class AbpAuditLoggingModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpAuditingOptions>(options =>
@ -21,5 +21,4 @@ namespace LINGYUN.Abp.AuditLogging
options.IgnoredTypes.AddIfNotContains(typeof(CancellationTokenSource));
});
}
}
}

64
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AuditLog.cs

@ -1,53 +1,52 @@
using System;
using System.Collections.Generic;
using Volo.Abp.Auditing;
using Volo.Abp.Data;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public class AuditLog : IHasExtraProperties
{
public class AuditLog : IHasExtraProperties
{
public Guid Id { get; set; }
public string ApplicationName { get; set; }
public string? ApplicationName { get; set; }
public Guid? UserId { get; set; }
public string UserName { get; set; }
public string? UserName { get; set; }
public Guid? TenantId { get; set; }
public string TenantName { get; set; }
public string? TenantName { get; set; }
public Guid? ImpersonatorUserId { get; set; }
public string ImpersonatorUserName { get; set; }
public string? ImpersonatorUserName { get; set; }
public Guid? ImpersonatorTenantId { get; set; }
public string ImpersonatorTenantName { get; set; }
public string? ImpersonatorTenantName { get; set; }
public DateTime ExecutionTime { get; set; }
public int ExecutionDuration { get; set; }
public string ClientIpAddress { get; set; }
public string? ClientIpAddress { get; set; }
public string ClientName { get; set; }
public string? ClientName { get; set; }
public string ClientId { get; set; }
public string? ClientId { get; set; }
public string CorrelationId { get; set; }
public string? CorrelationId { get; set; }
public string BrowserInfo { get; set; }
public string? BrowserInfo { get; set; }
public string HttpMethod { get; set; }
public string? HttpMethod { get; set; }
public string Url { get; set; }
public string? Url { get; set; }
public string Exceptions { get; set; }
public string? Exceptions { get; set; }
public string Comments { get; set; }
public string? Comments { get; set; }
public int? HttpStatusCode { get; set; }
@ -66,30 +65,30 @@ namespace LINGYUN.Abp.AuditLogging
public AuditLog(
Guid id,
string applicationName,
string? applicationName,
Guid? tenantId,
string tenantName,
string? tenantName,
Guid? userId,
string userName,
string? userName,
DateTime executionTime,
int executionDuration,
string clientIpAddress,
string clientName,
string clientId,
string correlationId,
string browserInfo,
string httpMethod,
string url,
string? clientIpAddress,
string? clientName,
string? clientId,
string? correlationId,
string? browserInfo,
string? httpMethod,
string? url,
int? httpStatusCode,
Guid? impersonatorUserId,
string impersonatorUserName,
string? impersonatorUserName,
Guid? impersonatorTenantId,
string impersonatorTenantName,
string? impersonatorTenantName,
ExtraPropertyDictionary extraPropertyDictionary,
List<EntityChange> entityChanges,
List<AuditLogAction> actions,
string exceptions,
string comments)
string? exceptions,
string? comments)
{
Id = id;
ApplicationName = applicationName;
@ -118,5 +117,4 @@ namespace LINGYUN.Abp.AuditLogging
Exceptions = exceptions;
Comments = comments;
}
}
}

9
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AuditLogAction.cs

@ -2,11 +2,11 @@
using Volo.Abp.Auditing;
using Volo.Abp.Data;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[DisableAuditing]
public class AuditLogAction : IHasExtraProperties
{
[DisableAuditing]
public class AuditLogAction : IHasExtraProperties
{
public Guid Id { get; set; }
public Guid? TenantId { get; set; }
@ -44,5 +44,4 @@ namespace LINGYUN.Abp.AuditLogging
Parameters = actionInfo.Parameters;
// Parameters = actionInfo.Parameters.Length > 2000 ? "" : actionInfo.Parameters;
}
}
}

9
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/AuditingStore.cs

@ -2,11 +2,11 @@
using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[Dependency(ReplaceServices = true)]
public class AuditingStore : IAuditingStore, ITransientDependency
{
[Dependency(ReplaceServices = true)]
public class AuditingStore : IAuditingStore, ITransientDependency
{
private readonly IAuditLogManager _manager;
public AuditingStore(
@ -19,5 +19,4 @@ namespace LINGYUN.Abp.AuditLogging
{
await _manager.SaveAsync(auditInfo);
}
}
}

47
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultAuditLogManager.cs

@ -8,11 +8,11 @@ using System.Threading.Tasks;
using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[Dependency(TryRegister = true)]
public class DefaultAuditLogManager : IAuditLogManager, ISingletonDependency
{
[Dependency(TryRegister = true)]
public class DefaultAuditLogManager : IAuditLogManager, ISingletonDependency
{
public ILogger<DefaultAuditLogManager> Logger { protected get; set; }
public DefaultAuditLogManager()
@ -23,44 +23,44 @@ namespace LINGYUN.Abp.AuditLogging
public virtual Task<long> GetCountAsync(
DateTime? startTime = null,
DateTime? endTime = null,
string httpMethod = null,
string url = null,
string? httpMethod = null,
string? url = null,
Guid? userId = null,
string userName = null,
string applicationName = null,
string correlationId = null,
string clientId = null,
string clientIpAddress = null,
string? userName = null,
string? applicationName = null,
string? correlationId = null,
string? clientId = null,
string? clientIpAddress = null,
int? maxExecutionDuration = null,
int? minExecutionDuration = null,
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
Logger.LogDebug("No audit log manager is available!");
return Task.FromResult(0L);
}
public virtual Task<List<AuditLog>> GetListAsync(
string sorting = null,
string? sorting = null,
int maxResultCount = 50,
int skipCount = 0,
DateTime? startTime = null,
DateTime? endTime = null,
string httpMethod = null,
string url = null,
string? httpMethod = null,
string? url = null,
Guid? userId = null,
string userName = null,
string applicationName = null,
string correlationId = null,
string clientId = null,
string clientIpAddress = null,
string? userName = null,
string? applicationName = null,
string? correlationId = null,
string? clientId = null,
string? clientIpAddress = null,
int? maxExecutionDuration = null,
int? minExecutionDuration = null,
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
Logger.LogDebug("No audit log manager is available!");
return Task.FromResult(new List<AuditLog>());
@ -83,8 +83,8 @@ namespace LINGYUN.Abp.AuditLogging
{
Logger.LogDebug("No audit log manager is available!");
AuditLog auditLog = null;
return Task.FromResult(auditLog);
AuditLog? auditLog = null;
return Task.FromResult(auditLog!);
}
public virtual Task DeleteAsync(Guid id, CancellationToken cancellationToken = default)
@ -92,5 +92,4 @@ namespace LINGYUN.Abp.AuditLogging
Logger.LogDebug("No audit log manager is available!");
return Task.CompletedTask;
}
}
}

39
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultEntityChangeStore.cs

@ -5,36 +5,53 @@ using System.Threading.Tasks;
using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[Dependency(TryRegister = true)]
public class DefaultEntityChangeStore : IEntityChangeStore, ISingletonDependency
{
[Dependency(TryRegister = true)]
public class DefaultEntityChangeStore : IEntityChangeStore, ISingletonDependency
{
public Task<EntityChange> GetAsync(Guid entityChangeId, CancellationToken cancellationToken = default)
public Task<EntityChange?> GetAsync(Guid entityChangeId, CancellationToken cancellationToken = default)
{
EntityChange entityChange = null;
EntityChange? entityChange = null;
return Task.FromResult(entityChange);
}
public Task<long> GetCountAsync(Guid? auditLogId = null, DateTime? startTime = null, DateTime? endTime = null, EntityChangeType? changeType = null, string entityId = null, string entityTypeFullName = null, CancellationToken cancellationToken = default)
public Task<long> GetCountAsync(
Guid? auditLogId = null,
DateTime? startTime = null,
DateTime? endTime = null,
EntityChangeType? changeType = null,
string? entityId = null,
string? entityTypeFullName = null,
CancellationToken cancellationToken = default)
{
return Task.FromResult(0L);
}
public Task<List<EntityChange>> GetListAsync(string sorting = null, int maxResultCount = 50, int skipCount = 0, Guid? auditLogId = null, DateTime? startTime = null, DateTime? endTime = null, EntityChangeType? changeType = null, string entityId = null, string entityTypeFullName = null, bool includeDetails = false, CancellationToken cancellationToken = default)
public Task<List<EntityChange>> GetListAsync(
string? sorting = null,
int maxResultCount = 50,
int skipCount = 0,
Guid? auditLogId = null,
DateTime? startTime = null,
DateTime? endTime = null,
EntityChangeType? changeType = null,
string? entityId = null,
string? entityTypeFullName = null,
bool includeDetails = false,
CancellationToken cancellationToken = default)
{
return Task.FromResult(new List<EntityChange>());
}
public Task<EntityChangeWithUsername> GetWithUsernameAsync(Guid entityChangeId, CancellationToken cancellationToken = default)
{
EntityChangeWithUsername entityChange = null;
return Task.FromResult(entityChange);
EntityChangeWithUsername? entityChange = null;
return Task.FromResult(entityChange!);
}
public Task<List<EntityChangeWithUsername>> GetWithUsernameAsync(string entityId, string entityTypeFullName, CancellationToken cancellationToken = default)
{
return Task.FromResult(new List<EntityChangeWithUsername>());
}
}
}

49
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/DefaultSecurityLogManager.cs

@ -7,11 +7,11 @@ using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.SecurityLog;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[Dependency(TryRegister = true)]
public class DefaultSecurityLogManager : ISecurityLogManager, ISingletonDependency
{
[Dependency(TryRegister = true)]
public class DefaultSecurityLogManager : ISecurityLogManager, ISingletonDependency
{
public ILogger<DefaultSecurityLogManager> Logger { protected get; set; }
public DefaultSecurityLogManager()
@ -22,36 +22,36 @@ namespace LINGYUN.Abp.AuditLogging
public Task<long> GetCountAsync(
DateTime? startTime = null,
DateTime? endTime = null,
string applicationName = null,
string identity = null,
string action = null,
string? applicationName = null,
string? identity = null,
string? action = null,
Guid? userId = null,
string userName = null,
string clientId = null,
string clientIpAddress = null,
string correlationId = null,
CancellationToken cancellationToken = default(CancellationToken))
string? userName = null,
string? clientId = null,
string? clientIpAddress = null,
string? correlationId = null,
CancellationToken cancellationToken = default)
{
Logger.LogDebug("No security log manager is available!");
return Task.FromResult(0L);
}
public Task<List<SecurityLog>> GetListAsync(
string sorting = null,
string? sorting = null,
int maxResultCount = 50,
int skipCount = 0,
DateTime? startTime = null,
DateTime? endTime = null,
string applicationName = null,
string identity = null,
string action = null,
string? applicationName = null,
string? identity = null,
string? action = null,
Guid? userId = null,
string userName = null,
string clientId = null,
string clientIpAddress = null,
string correlationId = null,
string? userName = null,
string? clientId = null,
string? clientIpAddress = null,
string? correlationId = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
Logger.LogDebug("No security log manager is available!");
return Task.FromResult(new List<SecurityLog>());
@ -59,7 +59,7 @@ namespace LINGYUN.Abp.AuditLogging
public Task SaveAsync(
SecurityLogInfo securityLogInfo,
CancellationToken cancellationToken = default(CancellationToken))
CancellationToken cancellationToken = default)
{
Logger.LogDebug("No security log manager is available and is written to the local log by default");
Logger.LogInformation(securityLogInfo.ToString());
@ -74,8 +74,8 @@ namespace LINGYUN.Abp.AuditLogging
{
Logger.LogDebug("No security log manager is available!");
SecurityLog securityLog = null;
return Task.FromResult(securityLog);
SecurityLog? securityLog = null;
return Task.FromResult(securityLog!);
}
public virtual Task DeleteAsync(Guid id, CancellationToken cancellationToken = default)
@ -83,5 +83,4 @@ namespace LINGYUN.Abp.AuditLogging
Logger.LogDebug("No security log manager is available!");
return Task.CompletedTask;
}
}
}

13
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/EntityChange.cs

@ -5,11 +5,11 @@ using Volo.Abp.Auditing;
using Volo.Abp.Data;
using Volo.Abp.Guids;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[DisableAuditing]
public class EntityChange : IHasExtraProperties
{
[DisableAuditing]
public class EntityChange : IHasExtraProperties
{
public Guid Id { get; set; }
public Guid AuditLogId { get; set; }
@ -22,9 +22,9 @@ namespace LINGYUN.Abp.AuditLogging
public Guid? EntityTenantId { get; set; }
public string EntityId { get; set; }
public string? EntityId { get; set; }
public string EntityTypeFullName { get; set; }
public string? EntityTypeFullName { get; set; }
public List<EntityPropertyChange> PropertyChanges { get; set; }
@ -67,5 +67,4 @@ namespace LINGYUN.Abp.AuditLogging
}
}
}
}
}

7
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/EntityChangeWithUsername.cs

@ -1,9 +1,8 @@
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public class EntityChangeWithUsername
{
public class EntityChangeWithUsername
{
public EntityChange EntityChange { get; set; }
public string UserName { get; set; }
}
}

13
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/EntityPropertyChange.cs

@ -2,20 +2,20 @@
using Volo.Abp.Auditing;
using Volo.Abp.Guids;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[DisableAuditing]
public class EntityPropertyChange
{
[DisableAuditing]
public class EntityPropertyChange
{
public Guid Id { get; set; }
public Guid? TenantId { get; set; }
public Guid EntityChangeId { get; set; }
public string NewValue { get; set; }
public string? NewValue { get; set; }
public string OriginalValue { get; set; }
public string? OriginalValue { get; set; }
public string PropertyName { get; set; }
@ -39,5 +39,4 @@ namespace LINGYUN.Abp.AuditLogging
PropertyName = entityChangeInfo.PropertyName;
PropertyTypeFullName = entityChangeInfo.PropertyTypeFullName;
}
}
}

47
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IAuditLogManager.cs

@ -5,60 +5,59 @@ using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Auditing;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public interface IAuditLogManager
{
public interface IAuditLogManager
{
Task<AuditLog> GetAsync(
Guid id,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task DeleteAsync(
Guid id,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task<string> SaveAsync(
AuditLogInfo auditInfo,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task<long> GetCountAsync(
DateTime? startTime = null,
DateTime? endTime = null,
string httpMethod = null,
string url = null,
string? httpMethod = null,
string? url = null,
Guid? userId = null,
string userName = null,
string applicationName = null,
string correlationId = null,
string clientId = null,
string clientIpAddress = null,
string? userName = null,
string? applicationName = null,
string? correlationId = null,
string? clientId = null,
string? clientIpAddress = null,
int? maxExecutionDuration = null,
int? minExecutionDuration = null,
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task<List<AuditLog>> GetListAsync(
string sorting = null,
string? sorting = null,
int maxResultCount = 50,
int skipCount = 0,
DateTime? startTime = null,
DateTime? endTime = null,
string httpMethod = null,
string url = null,
string? httpMethod = null,
string? url = null,
Guid? userId = null,
string userName = null,
string applicationName = null,
string correlationId = null,
string clientId = null,
string clientIpAddress = null,
string? userName = null,
string? applicationName = null,
string? correlationId = null,
string? clientId = null,
string? clientIpAddress = null,
int? maxExecutionDuration = null,
int? minExecutionDuration = null,
bool? hasException = null,
HttpStatusCode? httpStatusCode = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
}
}

19
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/IEntityChangeStore.cs

@ -4,11 +4,11 @@ using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Auditing;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public interface IEntityChangeStore
{
public interface IEntityChangeStore
{
Task<EntityChange> GetAsync(
Task<EntityChange?> GetAsync(
Guid entityChangeId,
CancellationToken cancellationToken = default);
@ -17,20 +17,20 @@ namespace LINGYUN.Abp.AuditLogging
DateTime? startTime = null,
DateTime? endTime = null,
EntityChangeType? changeType = null,
string entityId = null,
string entityTypeFullName = null,
string? entityId = null,
string? entityTypeFullName = null,
CancellationToken cancellationToken = default);
Task<List<EntityChange>> GetListAsync(
string sorting = null,
string? sorting = null,
int maxResultCount = 50,
int skipCount = 0,
Guid? auditLogId = null,
DateTime? startTime = null,
DateTime? endTime = null,
EntityChangeType? changeType = null,
string entityId = null,
string entityTypeFullName = null,
string? entityId = null,
string? entityTypeFullName = null,
bool includeDetails = false,
CancellationToken cancellationToken = default);
@ -42,5 +42,4 @@ namespace LINGYUN.Abp.AuditLogging
string entityId,
string entityTypeFullName,
CancellationToken cancellationToken = default);
}
}

47
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/ISecurityLogManager.cs

@ -4,53 +4,52 @@ using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.SecurityLog;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public interface ISecurityLogManager
{
public interface ISecurityLogManager
{
Task<SecurityLog> GetAsync(
Guid id,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task DeleteAsync(
Guid id,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task SaveAsync(
SecurityLogInfo securityLogInfo,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task<List<SecurityLog>> GetListAsync(
string sorting = null,
string? sorting = null,
int maxResultCount = 50,
int skipCount = 0,
DateTime? startTime = null,
DateTime? endTime = null,
string applicationName = null,
string identity = null,
string action = null,
string? applicationName = null,
string? identity = null,
string? action = null,
Guid? userId = null,
string userName = null,
string clientId = null,
string clientIpAddress = null,
string correlationId = null,
string? userName = null,
string? clientId = null,
string? clientIpAddress = null,
string? correlationId = null,
bool includeDetails = false,
CancellationToken cancellationToken = default(CancellationToken));
CancellationToken cancellationToken = default);
Task<long> GetCountAsync(
DateTime? startTime = null,
DateTime? endTime = null,
string applicationName = null,
string identity = null,
string action = null,
string? applicationName = null,
string? identity = null,
string? action = null,
Guid? userId = null,
string userName = null,
string clientId = null,
string clientIpAddress = null,
string correlationId = null,
CancellationToken cancellationToken = default(CancellationToken));
string? userName = null,
string? clientId = null,
string? clientIpAddress = null,
string? correlationId = null,
CancellationToken cancellationToken = default);
}
}

25
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/SecurityLog.cs

@ -2,33 +2,33 @@
using Volo.Abp.Data;
using Volo.Abp.SecurityLog;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
public class SecurityLog : IHasExtraProperties
{
public class SecurityLog : IHasExtraProperties
{
public Guid Id { get; set; }
public Guid? TenantId { get; set; }
public string ApplicationName { get; set; }
public string? ApplicationName { get; set; }
public string Identity { get; set; }
public string? Identity { get; set; }
public string Action { get; set; }
public string? Action { get; set; }
public Guid? UserId { get; set; }
public string UserName { get; set; }
public string? UserName { get; set; }
public string TenantName { get; set; }
public string? TenantName { get; set; }
public string ClientId { get; set; }
public string? ClientId { get; set; }
public string CorrelationId { get; set; }
public string? CorrelationId { get; set; }
public string ClientIpAddress { get; set; }
public string? ClientIpAddress { get; set; }
public string BrowserInfo { get; set; }
public string? BrowserInfo { get; set; }
public DateTime CreationTime { get; set; }
@ -68,5 +68,4 @@ namespace LINGYUN.Abp.AuditLogging
}
}
}
}
}

9
aspnet-core/framework/auditing/LINGYUN.Abp.AuditLogging/LINGYUN/Abp/AuditLogging/SecurityLogStore.cs

@ -2,11 +2,11 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.SecurityLog;
namespace LINGYUN.Abp.AuditLogging
namespace LINGYUN.Abp.AuditLogging;
[Dependency(ReplaceServices = true)]
public class SecurityLogStore : ISecurityLogStore, ITransientDependency
{
[Dependency(ReplaceServices = true)]
public class SecurityLogStore : ISecurityLogStore, ITransientDependency
{
private readonly ISecurityLogManager _manager;
public SecurityLogStore(
@ -19,5 +19,4 @@ namespace LINGYUN.Abp.AuditLogging
{
await _manager.SaveAsync(securityLogInfo);
}
}
}

5
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/LINGYUN.Abp.Authentication.QQ.csproj

@ -5,6 +5,11 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>LINGYUN.Abp.Authentication.QQ</AssemblyName>
<PackageId>LINGYUN.Abp.Authentication.QQ</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>

17
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/LINGYUN/Abp/Authentication/QQ/AbpQQClaimTypes.cs

@ -1,12 +1,12 @@
namespace LINGYUN.Abp.Authentication.QQ
namespace LINGYUN.Abp.Authentication.QQ;
/// <summary>
/// QQ互联身份类型,可以像 <see cref="Volo.Abp.Security.Claims.AbpClaimTypes"/> 自行配置
/// <br />
/// See: <see cref="https://wiki.connect.qq.com/get_user_info"/>
/// </summary>
public class AbpQQClaimTypes
{
/// <summary>
/// QQ互联身份类型,可以像 <see cref="Volo.Abp.Security.Claims.AbpClaimTypes"/> 自行配置
/// <br />
/// See: <see cref="https://wiki.connect.qq.com/get_user_info"/>
/// </summary>
public class AbpQQClaimTypes
{
/// <summary>
/// 用户的唯一标识
/// </summary>
@ -27,5 +27,4 @@
/// see: https://wiki.connect.qq.com/get_user_info
/// </remarks>
public static string AvatarUrl { get; set; } = "avatar";
}
}

13
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/Microsoft/AspNetCore/Authentication/QQ/QQConnectOAuthHandler.cs

@ -12,13 +12,13 @@ using System.Text.Encodings.Web;
using System.Text.Json;
using System.Threading.Tasks;
namespace Microsoft.AspNetCore.Authentication.QQ
namespace Microsoft.AspNetCore.Authentication.QQ;
/// <summary>
/// QQ互联实现
/// </summary>
public class QQConnectOAuthHandler : OAuthHandler<QQConnectOAuthOptions>
{
/// <summary>
/// QQ互联实现
/// </summary>
public class QQConnectOAuthHandler : OAuthHandler<QQConnectOAuthOptions>
{
protected AbpTencentQQOptionsFactory TencentQQOptionsFactory { get; }
public QQConnectOAuthHandler(
IOptionsMonitor<QQConnectOAuthOptions> options,
@ -172,5 +172,4 @@ namespace Microsoft.AspNetCore.Authentication.QQ
return new AuthenticationTicket(context.Principal, context.Properties, Scheme.Name);
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/Microsoft/AspNetCore/Authentication/QQ/QQConnectOAuthOptions.cs

@ -3,10 +3,10 @@ using Microsoft.AspNetCore.Authentication.OAuth;
using Microsoft.AspNetCore.Http;
using System.Security.Claims;
namespace Microsoft.AspNetCore.Authentication.QQ
namespace Microsoft.AspNetCore.Authentication.QQ;
public class QQConnectOAuthOptions : OAuthOptions
{
public class QQConnectOAuthOptions : OAuthOptions
{
/// <summary>
/// 是否移动端样式
/// </summary>
@ -42,5 +42,4 @@ namespace Microsoft.AspNetCore.Authentication.QQ
ClaimActions.MapJsonKey(AbpQQClaimTypes.Gender, "gender");
ClaimActions.MapJsonKey(AbpQQClaimTypes.AvatarUrl, "figureurl_qq_1");
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/Microsoft/AspNetCore/Authentication/QQAuthenticationExtensions.cs

@ -3,10 +3,10 @@ using Microsoft.AspNetCore.Authentication.QQ;
using Microsoft.Extensions.DependencyInjection;
using System;
namespace Microsoft.AspNetCore.Authentication
namespace Microsoft.AspNetCore.Authentication;
public static class QQAuthenticationExtensions
{
public static class QQAuthenticationExtensions
{
/// <summary>
/// </summary>
public static AuthenticationBuilder AddQQConnect(
@ -59,5 +59,4 @@ namespace Microsoft.AspNetCore.Authentication
displayName,
configureOptions);
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/System/BytesExtensions.cs

@ -1,9 +1,9 @@
using System.Security.Cryptography;
namespace System
namespace System;
internal static class BytesExtensions
{
internal static class BytesExtensions
{
public static byte[] Sha1(this byte[] data)
{
using (var sha = SHA1.Create())
@ -12,5 +12,4 @@ namespace System
return hashBytes;
}
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/System/StringExtensions.cs

@ -1,10 +1,10 @@
using System.Security.Cryptography;
using System.Text;
namespace System
namespace System;
internal static class StringExtensions
{
internal static class StringExtensions
{
public static byte[] Sha1(this string str)
{
using (var sha = SHA1.Create())
@ -13,5 +13,4 @@ namespace System
return hashBytes;
}
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.QQ/System/Text/Json/JsonElementExtensions.cs

@ -1,9 +1,9 @@
using System.Collections.Generic;
namespace System.Text.Json
namespace System.Text.Json;
internal static class JsonElementExtensions
{
internal static class JsonElementExtensions
{
public static IEnumerable<string> GetRootStrings(this JsonDocument json, string key)
{
return json.RootElement.GetStrings(key);
@ -59,5 +59,4 @@ namespace System.Text.Json
}
return defaultValue;
}
}
}

5
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/LINGYUN.Abp.Authentication.WeChat.csproj

@ -5,6 +5,11 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>LINGYUN.Abp.Authentication.WeChat</AssemblyName>
<PackageId>LINGYUN.Abp.Authentication.WeChat</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>

13
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChat/Official/WeChatOfficialOAuthHandler.cs

@ -16,13 +16,13 @@ using System.Text.Encodings.Web;
using System.Text.Json;
using System.Threading.Tasks;
namespace Microsoft.AspNetCore.Authentication.WeChat.Official
namespace Microsoft.AspNetCore.Authentication.WeChat.Official;
/// <summary>
/// 网页授权只有公众平台的实现
/// </summary>
public class WeChatOfficialOAuthHandler : OAuthHandler<WeChatOfficialOAuthOptions>
{
/// <summary>
/// 网页授权只有公众平台的实现
/// </summary>
public class WeChatOfficialOAuthHandler : OAuthHandler<WeChatOfficialOAuthOptions>
{
protected AbpWeChatOfficialOptionsFactory WeChatOfficialOptionsFactory { get; }
public WeChatOfficialOAuthHandler(
IOptionsMonitor<WeChatOfficialOAuthOptions> options,
@ -310,5 +310,4 @@ namespace Microsoft.AspNetCore.Authentication.WeChat.Official
return userAgent.Contains("micromessenger", StringComparison.InvariantCultureIgnoreCase);
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChat/Official/WeChatOfficialOAuthOptions.cs

@ -5,10 +5,10 @@ using Microsoft.AspNetCore.Http;
using System.Security.Claims;
using System.Text.Json;
namespace Microsoft.AspNetCore.Authentication.WeChat.Official
namespace Microsoft.AspNetCore.Authentication.WeChat.Official;
public class WeChatOfficialOAuthOptions : OAuthOptions
{
public class WeChatOfficialOAuthOptions : OAuthOptions
{
public WeChatOfficialOAuthOptions()
{
// 用于防止初始化错误,会在OAuthHandler.InitializeHandlerAsync中进行重写
@ -43,5 +43,4 @@ namespace Microsoft.AspNetCore.Authentication.WeChat.Official
return string.Join(",", user.GetStrings("privilege"));
});
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChat/Official/WeChatOfficialStateCacheItem.cs

@ -1,7 +1,7 @@
namespace Microsoft.AspNetCore.Authentication.WeChat.Official
namespace Microsoft.AspNetCore.Authentication.WeChat.Official;
public class WeChatOfficialStateCacheItem
{
public class WeChatOfficialStateCacheItem
{
public string State { get; set; }
public WeChatOfficialStateCacheItem() { }
@ -14,5 +14,4 @@
{
return $"ci:{correlationId};p:{purpose ?? "null"}";
}
}
}

7
aspnet-core/framework/authentication/LINGYUN.Abp.Authentication.WeChat/Microsoft/AspNetCore/Authentication/WeChatAuthenticationExtensions.cs

@ -4,10 +4,10 @@ using Microsoft.AspNetCore.Authentication.WeChat.Official;
using Microsoft.Extensions.DependencyInjection;
using System;
namespace Microsoft.AspNetCore.Authentication
namespace Microsoft.AspNetCore.Authentication;
public static class WeChatAuthenticationExtensions
{
public static class WeChatAuthenticationExtensions
{
/// <summary>
/// </summary>
public static AuthenticationBuilder AddWeChat(
@ -61,5 +61,4 @@ namespace Microsoft.AspNetCore.Authentication
displayName,
configureOptions);
}
}
}

9
aspnet-core/framework/authorization/LINGYUN.Abp.Authorization.OrganizationUnits/LINGYUN.Abp.Authorization.OrganizationUnits.csproj

@ -4,7 +4,14 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks>
<Nullable>enable</Nullable>
<WarningsAsErrors>Nullable</WarningsAsErrors>
<AssemblyName>LINGYUN.Abp.Authorization.OrganizationUnits</AssemblyName>
<PackageId>LINGYUN.Abp.Authorization.OrganizationUnits</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>

2
aspnet-core/framework/cli/LINGYUN.Abp.Cli/LINGYUN.Abp.Cli.csproj

@ -5,7 +5,7 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<Version>8.1.1</Version>
<Version>8.2.0</Version>
<Copyright>colin</Copyright>
<Description>Use LINGYUN.MicroService.Templates command line</Description>
<PackAsTool>true</PackAsTool>

5
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN.Abp.Aliyun.SettingManagement.csproj

@ -5,6 +5,11 @@
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<AssemblyName>LINGYUN.Abp.Aliyun.SettingManagement</AssemblyName>
<PackageId>LINGYUN.Abp.Aliyun.SettingManagement</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
</PropertyGroup>

11
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AbpAliyunSettingManagementModule.cs

@ -7,14 +7,14 @@ using Volo.Abp.Localization;
using Volo.Abp.Modularity;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.Aliyun.SettingManagement
{
[DependsOn(
namespace LINGYUN.Abp.Aliyun.SettingManagement;
[DependsOn(
typeof(AbpAliyunModule),
typeof(AbpAliyunSmsModule),
typeof(AbpAspNetCoreMvcModule))]
public class AbpAliyunSettingManagementModule : AbpModule
{
public class AbpAliyunSettingManagementModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<IMvcBuilder>(mvcBuilder =>
@ -38,5 +38,4 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement
.AddVirtualJson("/LINGYUN/Abp/Aliyun/SettingManagement/Localization/Resources");
});
}
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingAppService.cs

@ -11,10 +11,10 @@ using Volo.Abp.SettingManagement;
using Volo.Abp.Settings;
using ValueType = LINGYUN.Abp.SettingManagement.ValueType;
namespace LINGYUN.Abp.Aliyun.SettingManagement
namespace LINGYUN.Abp.Aliyun.SettingManagement;
public class AliyunSettingAppService : ApplicationService, IAliyunSettingAppService
{
public class AliyunSettingAppService : ApplicationService, IAliyunSettingAppService
{
protected ISettingManager SettingManager { get; }
protected IPermissionChecker PermissionChecker { get; }
protected ISettingDefinitionManager SettingDefinitionManager { get; }
@ -198,5 +198,4 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement
new OptionDto(L["Region:MainLand"], "oss-rg-china-mainland"),
};
}
}
}

13
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingController.cs

@ -4,13 +4,13 @@ using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.AspNetCore.Mvc;
namespace LINGYUN.Abp.Aliyun.SettingManagement
namespace LINGYUN.Abp.Aliyun.SettingManagement;
[RemoteService(Name = AbpSettingManagementRemoteServiceConsts.RemoteServiceName)]
[Area("settingManagement")]
[Route("api/setting-management/aliyun")]
public class AliyunSettingController : AbpControllerBase, IAliyunSettingAppService
{
[RemoteService(Name = AbpSettingManagementRemoteServiceConsts.RemoteServiceName)]
[Area("settingManagement")]
[Route("api/setting-management/aliyun")]
public class AliyunSettingController : AbpControllerBase, IAliyunSettingAppService
{
protected IAliyunSettingAppService AppService { get; }
public AliyunSettingController(
@ -32,5 +32,4 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement
{
return await AppService.GetAllForGlobalAsync();
}
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingPermissionDefinitionProvider.cs

@ -2,10 +2,10 @@
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Localization;
namespace LINGYUN.Abp.Aliyun.SettingManagement
namespace LINGYUN.Abp.Aliyun.SettingManagement;
public class AliyunSettingPermissionDefinitionProvider : PermissionDefinitionProvider
{
public class AliyunSettingPermissionDefinitionProvider : PermissionDefinitionProvider
{
public override void Define(IPermissionDefinitionContext context)
{
var wechatGroup = context.AddGroup(
@ -20,5 +20,4 @@ namespace LINGYUN.Abp.Aliyun.SettingManagement
{
return LocalizableString.Create<AliyunResource>(name);
}
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/AliyunSettingPermissionNames.cs

@ -1,9 +1,8 @@
namespace LINGYUN.Abp.Aliyun.SettingManagement
namespace LINGYUN.Abp.Aliyun.SettingManagement;
public class AliyunSettingPermissionNames
{
public class AliyunSettingPermissionNames
{
public const string GroupName = "Abp.Aliyun";
public const string Settings = GroupName + ".Settings";
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun.SettingManagement/LINGYUN/Abp/Aliyun/SettingManagement/IAliyunSettingAppService.cs

@ -1,8 +1,7 @@
using LINGYUN.Abp.SettingManagement;
namespace LINGYUN.Abp.Aliyun.SettingManagement
namespace LINGYUN.Abp.Aliyun.SettingManagement;
public interface IAliyunSettingAppService : IReadonlySettingAppService
{
public interface IAliyunSettingAppService : IReadonlySettingAppService
{
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN.Abp.Aliyun.csproj

@ -4,7 +4,12 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks>
<AssemblyName>LINGYUN.Abp.Aliyun</AssemblyName>
<PackageId>LINGYUN.Abp.Aliyun</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
<Description>阿里云SDK基础框架</Description>
</PropertyGroup>

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AbpAliyunException.cs

@ -3,10 +3,10 @@ using Volo.Abp;
using Volo.Abp.ExceptionHandling;
using Volo.Abp.Logging;
namespace LINGYUN.Abp.Aliyun
namespace LINGYUN.Abp.Aliyun;
public class AbpAliyunException : AbpException, IHasErrorCode, IHasLogLevel
{
public class AbpAliyunException : AbpException, IHasErrorCode, IHasLogLevel
{
public LogLevel LogLevel { get; set; }
public string Code { get; }
@ -17,5 +17,4 @@ namespace LINGYUN.Abp.Aliyun
Code = code;
LogLevel = LogLevel.Warning;
}
}
}

11
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AbpAliyunModule.cs

@ -7,16 +7,16 @@ using Volo.Abp.Modularity;
using Volo.Abp.Settings;
using Volo.Abp.VirtualFileSystem;
namespace LINGYUN.Abp.Aliyun
{
[DependsOn(
namespace LINGYUN.Abp.Aliyun;
[DependsOn(
typeof(AbpCachingModule),
typeof(AbpSettingsModule),
typeof(AbpJsonModule),
typeof(AbpLocalizationModule),
typeof(AbpFeaturesLimitValidationModule))]
public class AbpAliyunModule : AbpModule
{
public class AbpAliyunModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
@ -31,5 +31,4 @@ namespace LINGYUN.Abp.Aliyun
.AddVirtualJson("/LINGYUN/Abp/Aliyun/Localization/Resources");
});
}
}
}

9
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AcsClientFactory.cs

@ -7,11 +7,11 @@ using Volo.Abp.DependencyInjection;
using Volo.Abp.Features;
using Volo.Abp.Settings;
namespace LINGYUN.Abp.Aliyun
namespace LINGYUN.Abp.Aliyun;
[RequiresFeature(AliyunFeatureNames.Enable)]
public class AcsClientFactory : AliyunClientFactory<IAcsClient>, IAcsClientFactory, ITransientDependency
{
[RequiresFeature(AliyunFeatureNames.Enable)]
public class AcsClientFactory : AliyunClientFactory<IAcsClient>, IAcsClientFactory, ITransientDependency
{
public AcsClientFactory(
ISettingProvider settingProvider,
IDistributedCache<AliyunBasicSessionCredentialsCacheItem> cache)
@ -31,5 +31,4 @@ namespace LINGYUN.Abp.Aliyun
var credentials = new BasicSessionCredentials(accessKeyId, accessKeySecret, securityToken);
return new DefaultAcsClient(profile, credentials);
}
}
}

9
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AliyunBasicSessionCredentialsCacheItem.cs

@ -1,10 +1,10 @@
using System;
namespace LINGYUN.Abp.Aliyun
namespace LINGYUN.Abp.Aliyun;
[Serializable]
public class AliyunBasicSessionCredentialsCacheItem
{
[Serializable]
public class AliyunBasicSessionCredentialsCacheItem
{
private readonly static string _cacheKey;
public static string CacheKey => _cacheKey;
public string AccessKeyId { get; set; }
@ -27,5 +27,4 @@ namespace LINGYUN.Abp.Aliyun
AccessKeySecret = accessKeySecret;
SecurityToken = securityToken;
}
}
}

31
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/AliyunClientFactory.cs

@ -10,14 +10,14 @@ using Volo.Abp;
using Volo.Abp.Caching;
using Volo.Abp.Settings;
namespace LINGYUN.Abp.Aliyun
namespace LINGYUN.Abp.Aliyun;
/// <summary>
/// 阿里云通用客户端构建工厂
/// </summary>
/// <typeparam name="TClient"></typeparam>
public abstract class AliyunClientFactory<TClient>
{
/// <summary>
/// 阿里云通用客户端构建工厂
/// </summary>
/// <typeparam name="TClient"></typeparam>
public abstract class AliyunClientFactory<TClient>
{
protected ISettingProvider SettingProvider { get; }
protected IDistributedCache<AliyunBasicSessionCredentialsCacheItem> Cache { get; }
public AliyunClientFactory(
@ -93,14 +93,14 @@ namespace LINGYUN.Abp.Aliyun
return cacheItem;
}
}
/// <summary>
/// 阿里云通用客户端构建工厂
/// </summary>
/// <typeparam name="TClient">客户端类型</typeparam>
/// <typeparam name="TConfiguration">客户端参数类型</typeparam>
public abstract class AliyunClientFactory<TClient, TConfiguration>
{
}
/// <summary>
/// 阿里云通用客户端构建工厂
/// </summary>
/// <typeparam name="TClient">客户端类型</typeparam>
/// <typeparam name="TConfiguration">客户端参数类型</typeparam>
public abstract class AliyunClientFactory<TClient, TConfiguration>
{
protected ISettingProvider SettingProvider { get; }
protected IDistributedCache<AliyunBasicSessionCredentialsCacheItem> Cache { get; }
public AliyunClientFactory(
@ -176,5 +176,4 @@ namespace LINGYUN.Abp.Aliyun
return cacheItem;
}
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/IAcsClientFactory.cs

@ -1,15 +1,14 @@
using Aliyun.Acs.Core;
using System.Threading.Tasks;
namespace LINGYUN.Abp.Aliyun
namespace LINGYUN.Abp.Aliyun;
public interface IAcsClientFactory
{
public interface IAcsClientFactory
{
/// <summary>
/// 构造一个通用的Acs客户端调用
/// 通过CommonRequest调用可以不需要集成其他SDK包
/// </summary>
/// <returns></returns>
Task<IAcsClient> CreateAsync();
}
}

9
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Localization/AliyunResource.cs

@ -1,9 +1,8 @@
using Volo.Abp.Localization;
namespace LINGYUN.Abp.Aliyun.Localization
namespace LINGYUN.Abp.Aliyun.Localization;
[LocalizationResourceName("Aliyun")]
public class AliyunResource
{
[LocalizationResourceName("Aliyun")]
public class AliyunResource
{
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingNames.cs

@ -1,7 +1,7 @@
namespace LINGYUN.Abp.Aliyun.Settings
namespace LINGYUN.Abp.Aliyun.Settings;
public static class AliyunSettingNames
{
public static class AliyunSettingNames
{
public const string Prefix = "Abp.Aliyun";
/// <summary>
@ -79,5 +79,4 @@
/// </summary>
public const string VisableErrorToClient = Prefix + ".VisableErrorToClient";
}
}
}

7
aspnet-core/framework/cloud-aliyun/LINGYUN.Abp.Aliyun/LINGYUN/Abp/Aliyun/Settings/AliyunSettingProvider.cs

@ -2,10 +2,10 @@
using Volo.Abp.Localization;
using Volo.Abp.Settings;
namespace LINGYUN.Abp.Aliyun.Settings
namespace LINGYUN.Abp.Aliyun.Settings;
public class AliyunSettingProvider : SettingDefinitionProvider
{
public class AliyunSettingProvider : SettingDefinitionProvider
{
public override void Define(ISettingDefinitionContext context)
{
context.Add(GetAuthorizationSettings());
@ -208,5 +208,4 @@ namespace LINGYUN.Abp.Aliyun.Settings
{
return LocalizableString.Create<AliyunResource>(name);
}
}
}

7
aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN.Abp.BlobStoring.Tencent.csproj

@ -4,7 +4,12 @@
<Import Project="..\..\..\..\common.props" />
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetFrameworks>netstandard2.0;netstandard2.1;net8.0</TargetFrameworks>
<AssemblyName>LINGYUN.Abp.BlobStoring.Tencent</AssemblyName>
<PackageId>LINGYUN.Abp.BlobStoring.Tencent</PackageId>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace />
<Description>腾讯云Oss对象存储Abp集成</Description>
</PropertyGroup>

7
aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/DefaultTencentBlobNameCalculator.cs

@ -2,10 +2,10 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
namespace LINGYUN.Abp.BlobStoring.Tencent
namespace LINGYUN.Abp.BlobStoring.Tencent;
public class DefaultTencentBlobNameCalculator : ITencentBlobNameCalculator, ITransientDependency
{
public class DefaultTencentBlobNameCalculator : ITencentBlobNameCalculator, ITransientDependency
{
protected ICurrentTenant CurrentTenant { get; }
public DefaultTencentBlobNameCalculator(
@ -20,5 +20,4 @@ namespace LINGYUN.Abp.BlobStoring.Tencent
? $"host/{args.BlobName}"
: $"tenants/{CurrentTenant.Id.Value:D}/{args.BlobName}";
}
}
}

7
aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/ITencentBlobNameCalculator.cs

@ -1,9 +1,8 @@
using Volo.Abp.BlobStoring;
namespace LINGYUN.Abp.BlobStoring.Tencent
namespace LINGYUN.Abp.BlobStoring.Tencent;
public interface ITencentBlobNameCalculator
{
public interface ITencentBlobNameCalculator
{
string Calculate(BlobProviderArgs args);
}
}

7
aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobContainerConfigurationExtensions.cs

@ -1,10 +1,10 @@
using System;
using Volo.Abp.BlobStoring;
namespace LINGYUN.Abp.BlobStoring.Tencent
namespace LINGYUN.Abp.BlobStoring.Tencent;
public static class TencentBlobContainerConfigurationExtensions
{
public static class TencentBlobContainerConfigurationExtensions
{
public static TencentBlobProviderConfiguration GetTencentConfiguration(
this BlobContainerConfiguration containerConfiguration)
{
@ -21,5 +21,4 @@ namespace LINGYUN.Abp.BlobStoring.Tencent
return containerConfiguration;
}
}
}

7
aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobNamingNormalizer.cs

@ -2,10 +2,10 @@
using Volo.Abp.BlobStoring;
using Volo.Abp.DependencyInjection;
namespace LINGYUN.Abp.BlobStoring.Tencent
namespace LINGYUN.Abp.BlobStoring.Tencent;
public class TencentBlobNamingNormalizer : IBlobNamingNormalizer, ITransientDependency
{
public class TencentBlobNamingNormalizer : IBlobNamingNormalizer, ITransientDependency
{
/// <summary>
/// 腾讯云对象命名规范
/// https://cloud.tencent.com/document/product/436/13324
@ -57,5 +57,4 @@ namespace LINGYUN.Abp.BlobStoring.Tencent
return containerName;
}
}
}

7
aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobProviderConfiguration.cs

@ -2,10 +2,10 @@
using Volo.Abp;
using Volo.Abp.BlobStoring;
namespace LINGYUN.Abp.BlobStoring.Tencent
namespace LINGYUN.Abp.BlobStoring.Tencent;
public class TencentBlobProviderConfiguration
{
public class TencentBlobProviderConfiguration
{
/// <summary>
/// AppId
/// </summary>
@ -59,5 +59,4 @@ namespace LINGYUN.Abp.BlobStoring.Tencent
{
_containerConfiguration = containerConfiguration;
}
}
}

7
aspnet-core/framework/cloud-tencent/LINGYUN.Abp.BlobStoring.Tencent/LINGYUN/Abp/BlobStoring/Tencent/TencentBlobProviderConfigurationNames.cs

@ -1,7 +1,7 @@
namespace LINGYUN.Abp.BlobStoring.Tencent
namespace LINGYUN.Abp.BlobStoring.Tencent;
public static class TencentBlobProviderConfigurationNames
{
public static class TencentBlobProviderConfigurationNames
{
/// <summary>
/// AppId
/// </summary>
@ -22,5 +22,4 @@
/// 创建命名空间时防盗链列表
/// </summary>
public const string CreateBucketReferer = "Tencent:OSS:CreateBucketReferer";
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save