diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs index 0259dce5d0..e4450d4dfd 100644 --- a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs +++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs @@ -27,7 +27,10 @@ namespace Volo.Abp.ObjectExtending [NotNull] public Dictionary Configuration { get; } - + + [NotNull] + public ModuleEntityObjectPropertyExtensionEntityConfiguration Entity { get; } + [NotNull] public ModuleEntityObjectPropertyExtensionUIConfiguration UI { get; } @@ -47,6 +50,7 @@ namespace Volo.Abp.ObjectExtending Attributes = new List(); Validators = new List>(); + Entity = new ModuleEntityObjectPropertyExtensionEntityConfiguration(); UI = new ModuleEntityObjectPropertyExtensionUIConfiguration(); Api = new ModuleEntityObjectPropertyExtensionApiConfiguration(); } diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionEntityConfiguration.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionEntityConfiguration.cs new file mode 100644 index 0000000000..8a683ab81e --- /dev/null +++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionEntityConfiguration.cs @@ -0,0 +1,10 @@ +namespace Volo.Abp.ObjectExtending +{ + public class ModuleEntityObjectPropertyExtensionEntityConfiguration + { + /// + /// Default: true. + /// + public bool IsAvailable { get; set; } = true; + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs index 91a329d984..94056f3251 100644 --- a/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs +++ b/framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs @@ -6,30 +6,30 @@ namespace Volo.Abp.ObjectExtending { public static class ModuleObjectExtensionConfigurationHelper { - public static void ApplyModuleObjectExtensionConfigurations( + public static void ApplyModuleObjectExtensionConfigurationToEntity( string moduleName, string objectName, - Type[] createFormTypes = null, - Type[] editFormTypes = null, - Type[] getApiTypes = null, - Type[] createApiTypes = null, - Type[] updateApiTypes = null - ) + Type entityType) { foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName)) { - if (propertyConfig.UI.OnCreateForm.IsVisible && - createFormTypes != null) + if (propertyConfig.Entity.IsAvailable && + entityType != null) { - ApplyPropertyConfigurationToTypes(propertyConfig, createFormTypes); - } - - if (propertyConfig.UI.OnEditForm.IsVisible && - editFormTypes != null) - { - ApplyPropertyConfigurationToTypes(propertyConfig, editFormTypes); + ApplyPropertyConfigurationToTypes(propertyConfig, new[] { entityType }); } + } + } + public static void ApplyModuleObjectExtensionConfigurationToApi( + string moduleName, + string objectName, + Type[] getApiTypes = null, + Type[] createApiTypes = null, + Type[] updateApiTypes = null) + { + foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName)) + { if (propertyConfig.Api.OnGet.IsAvailable && getApiTypes != null) { @@ -50,9 +50,66 @@ namespace Volo.Abp.ObjectExtending } } + public static void ApplyModuleObjectExtensionConfigurationToUI( + string moduleName, + string objectName, + Type[] createFormTypes = null, + Type[] editFormTypes = null) + { + foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName)) + { + if (propertyConfig.UI.OnCreateForm.IsVisible && + createFormTypes != null) + { + ApplyPropertyConfigurationToTypes(propertyConfig, createFormTypes); + } + + if (propertyConfig.UI.OnEditForm.IsVisible && + editFormTypes != null) + { + ApplyPropertyConfigurationToTypes(propertyConfig, editFormTypes); + } + } + } + + public static void ApplyModuleObjectExtensionConfigurations( + string moduleName, + string objectName, + Type entityType = null, + Type[] createFormTypes = null, + Type[] editFormTypes = null, + Type[] getApiTypes = null, + Type[] createApiTypes = null, + Type[] updateApiTypes = null) + { + if (entityType != null) + { + ApplyModuleObjectExtensionConfigurationToEntity( + moduleName, + objectName, + entityType + ); + } + + ApplyModuleObjectExtensionConfigurationToApi( + moduleName, + objectName, + getApiTypes: getApiTypes, + createApiTypes: createApiTypes, + updateApiTypes: updateApiTypes + ); + + ApplyModuleObjectExtensionConfigurationToUI( + moduleName, + objectName, + createFormTypes: createFormTypes, + editFormTypes: editFormTypes + ); + } + [NotNull] public static IEnumerable GetPropertyConfigurations( - string moduleName, + string moduleName, string objectName) { var moduleConfig = ObjectExtensionManager.Instance.Modules.GetOrDefault(moduleName); diff --git a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs index 12af875bab..d1413d4cb8 100644 --- a/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs +++ b/modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs @@ -6,6 +6,7 @@ using Volo.Abp.AutoMapper; using Volo.Abp.Domain; using Volo.Abp.EventBus.Distributed; using Volo.Abp.Modularity; +using Volo.Abp.ObjectExtending; using Volo.Abp.Users; namespace Volo.Abp.Identity @@ -45,6 +46,15 @@ namespace Volo.Abp.Identity AddAbpIdentityOptionsFactory(context.Services); } + public override void PostConfigureServices(ServiceConfigurationContext context) + { + ModuleObjectExtensionConfigurationHelper.ApplyModuleObjectExtensionConfigurationToEntity( + "Identity", + "User", + typeof(IdentityUser) + ); + } + private static void AddAbpIdentityOptionsFactory(IServiceCollection services) { services.Replace(ServiceDescriptor.Transient, AbpIdentityOptionsFactory>());