From e4733b300d990c571e85cf245b7c0f80a20f50b3 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 25 Apr 2022 12:17:29 +0800 Subject: [PATCH] Add Object Extension feature. --- .../OpenIddictModuleExtensionConfiguration.cs | 43 +++++++++++++++++++ ...ensionConfigurationDictionaryExtensions.cs | 17 ++++++++ .../OpenIddictModuleExtensionConsts.cs | 17 ++++++++ .../OpenIddict/AbpOpenIddictDomainModule.cs | 34 +++++++++++++++ 4 files changed, 111 insertions(+) create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfiguration.cs create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfigurationDictionaryExtensions.cs create mode 100644 modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConsts.cs diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfiguration.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfiguration.cs new file mode 100644 index 0000000000..240b50bfa0 --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfiguration.cs @@ -0,0 +1,43 @@ +using System; +using Volo.Abp.ObjectExtending.Modularity; + +namespace Volo.Abp.ObjectExtending; + +public class OpenIddictModuleExtensionConfiguration : ModuleExtensionConfiguration +{ + public OpenIddictModuleExtensionConfiguration ConfigureApplication( + Action configureAction) + { + return this.ConfigureEntity( + OpenIddictModuleExtensionConsts.EntityNames.Application, + configureAction + ); + } + + public OpenIddictModuleExtensionConfiguration ConfigureAuthorization( + Action configureAction) + { + return this.ConfigureEntity( + OpenIddictModuleExtensionConsts.EntityNames.Authorization, + configureAction + ); + } + + public OpenIddictModuleExtensionConfiguration ConfigureScope( + Action configureAction) + { + return this.ConfigureEntity( + OpenIddictModuleExtensionConsts.EntityNames.Scope, + configureAction + ); + } + + public OpenIddictModuleExtensionConfiguration ConfigureToken( + Action configureAction) + { + return this.ConfigureEntity( + OpenIddictModuleExtensionConsts.EntityNames.Token, + configureAction + ); + } +} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfigurationDictionaryExtensions.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfigurationDictionaryExtensions.cs new file mode 100644 index 0000000000..ba15bd3bed --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConfigurationDictionaryExtensions.cs @@ -0,0 +1,17 @@ +using System; +using Volo.Abp.ObjectExtending.Modularity; + +namespace Volo.Abp.ObjectExtending; + +public static class OpenIddictModuleExtensionConfigurationDictionaryExtensions +{ + public static ModuleExtensionConfigurationDictionary ConfigureOpenIddict( + this ModuleExtensionConfigurationDictionary modules, + Action configureAction) + { + return modules.ConfigureModule( + OpenIddictModuleExtensionConsts.ModuleName, + configureAction + ); + } +} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConsts.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConsts.cs new file mode 100644 index 0000000000..fba7456b8a --- /dev/null +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain.Shared/Volo/Abp/ObjectExtending/OpenIddictModuleExtensionConsts.cs @@ -0,0 +1,17 @@ +namespace Volo.Abp.ObjectExtending; + +public class OpenIddictModuleExtensionConsts +{ + public const string ModuleName = "OpenIddict"; + + public static class EntityNames + { + public const string Application = "Application"; + + public const string Authorization = "Authorization"; + + public const string Scope = "Scope"; + + public const string Token = "Token"; + } +} diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs index 0f01600e3a..9b84731432 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs @@ -11,6 +11,8 @@ using Volo.Abp.Domain; using Volo.Abp.Guids; using Volo.Abp.Identity; using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; +using Volo.Abp.ObjectExtending.Modularity; using Volo.Abp.OpenIddict.Applications; using Volo.Abp.OpenIddict.Authorizations; using Volo.Abp.OpenIddict.Scopes; @@ -30,6 +32,8 @@ namespace Volo.Abp.OpenIddict; )] public class AbpOpenIddictDomainModule : AbpModule { + private static readonly OneTimeRunner OneTimeRunner = new OneTimeRunner(); + public override void ConfigureServices(ServiceConfigurationContext context) { AddOpenIddict(context.Services); @@ -158,4 +162,34 @@ public class AbpOpenIddictDomainModule : AbpModule services.ExecutePreConfiguredActions(openIddictBuilder); } + + public override void PostConfigureServices(ServiceConfigurationContext context) + { + OneTimeRunner.Run(() => + { + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + OpenIddictModuleExtensionConsts.ModuleName, + OpenIddictModuleExtensionConsts.EntityNames.Application, + typeof(OpenIddictApplication) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + OpenIddictModuleExtensionConsts.ModuleName, + OpenIddictModuleExtensionConsts.EntityNames.Authorization, + typeof(OpenIddictAuthorization) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + OpenIddictModuleExtensionConsts.ModuleName, + OpenIddictModuleExtensionConsts.EntityNames.Scope, + typeof(OpenIddictScope) + ); + + ModuleExtensionConfigurationHelper.ApplyEntityConfigurationToEntity( + OpenIddictModuleExtensionConsts.ModuleName, + OpenIddictModuleExtensionConsts.EntityNames.Token, + typeof(OpenIddictToken) + ); + }); + } }