Browse Source

Added Entity configuration for object extensions

pull/3834/head
Halil İbrahim Kalkan 7 years ago
parent
commit
e75005ceed
  1. 6
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs
  2. 10
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionEntityConfiguration.cs
  3. 91
      framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs
  4. 10
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/AbpIdentityDomainModule.cs

6
framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionConfiguration.cs

@ -27,7 +27,10 @@ namespace Volo.Abp.ObjectExtending
[NotNull] [NotNull]
public Dictionary<object, object> Configuration { get; } public Dictionary<object, object> Configuration { get; }
[NotNull]
public ModuleEntityObjectPropertyExtensionEntityConfiguration Entity { get; }
[NotNull] [NotNull]
public ModuleEntityObjectPropertyExtensionUIConfiguration UI { get; } public ModuleEntityObjectPropertyExtensionUIConfiguration UI { get; }
@ -47,6 +50,7 @@ namespace Volo.Abp.ObjectExtending
Attributes = new List<Attribute>(); Attributes = new List<Attribute>();
Validators = new List<Action<ObjectExtensionPropertyValidationContext>>(); Validators = new List<Action<ObjectExtensionPropertyValidationContext>>();
Entity = new ModuleEntityObjectPropertyExtensionEntityConfiguration();
UI = new ModuleEntityObjectPropertyExtensionUIConfiguration(); UI = new ModuleEntityObjectPropertyExtensionUIConfiguration();
Api = new ModuleEntityObjectPropertyExtensionApiConfiguration(); Api = new ModuleEntityObjectPropertyExtensionApiConfiguration();
} }

10
framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleEntityObjectPropertyExtensionEntityConfiguration.cs

@ -0,0 +1,10 @@
namespace Volo.Abp.ObjectExtending
{
public class ModuleEntityObjectPropertyExtensionEntityConfiguration
{
/// <summary>
/// Default: true.
/// </summary>
public bool IsAvailable { get; set; } = true;
}
}

91
framework/src/Volo.Abp.ObjectExtending/Volo/Abp/ObjectExtending/ModuleObjectExtensionConfigurationHelper.cs

@ -6,30 +6,30 @@ namespace Volo.Abp.ObjectExtending
{ {
public static class ModuleObjectExtensionConfigurationHelper public static class ModuleObjectExtensionConfigurationHelper
{ {
public static void ApplyModuleObjectExtensionConfigurations( public static void ApplyModuleObjectExtensionConfigurationToEntity(
string moduleName, string moduleName,
string objectName, string objectName,
Type[] createFormTypes = null, Type entityType)
Type[] editFormTypes = null,
Type[] getApiTypes = null,
Type[] createApiTypes = null,
Type[] updateApiTypes = null
)
{ {
foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName)) foreach (var propertyConfig in GetPropertyConfigurations(moduleName, objectName))
{ {
if (propertyConfig.UI.OnCreateForm.IsVisible && if (propertyConfig.Entity.IsAvailable &&
createFormTypes != null) entityType != null)
{ {
ApplyPropertyConfigurationToTypes(propertyConfig, createFormTypes); ApplyPropertyConfigurationToTypes(propertyConfig, new[] { entityType });
}
if (propertyConfig.UI.OnEditForm.IsVisible &&
editFormTypes != null)
{
ApplyPropertyConfigurationToTypes(propertyConfig, editFormTypes);
} }
}
}
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 && if (propertyConfig.Api.OnGet.IsAvailable &&
getApiTypes != null) 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] [NotNull]
public static IEnumerable<ModuleEntityObjectPropertyExtensionConfiguration> GetPropertyConfigurations( public static IEnumerable<ModuleEntityObjectPropertyExtensionConfiguration> GetPropertyConfigurations(
string moduleName, string moduleName,
string objectName) string objectName)
{ {
var moduleConfig = ObjectExtensionManager.Instance.Modules.GetOrDefault(moduleName); var moduleConfig = ObjectExtensionManager.Instance.Modules.GetOrDefault(moduleName);

10
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.Domain;
using Volo.Abp.EventBus.Distributed; using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
using Volo.Abp.ObjectExtending;
using Volo.Abp.Users; using Volo.Abp.Users;
namespace Volo.Abp.Identity namespace Volo.Abp.Identity
@ -45,6 +46,15 @@ namespace Volo.Abp.Identity
AddAbpIdentityOptionsFactory(context.Services); AddAbpIdentityOptionsFactory(context.Services);
} }
public override void PostConfigureServices(ServiceConfigurationContext context)
{
ModuleObjectExtensionConfigurationHelper.ApplyModuleObjectExtensionConfigurationToEntity(
"Identity",
"User",
typeof(IdentityUser)
);
}
private static void AddAbpIdentityOptionsFactory(IServiceCollection services) private static void AddAbpIdentityOptionsFactory(IServiceCollection services)
{ {
services.Replace(ServiceDescriptor.Transient<IOptionsFactory<IdentityOptions>, AbpIdentityOptionsFactory>()); services.Replace(ServiceDescriptor.Transient<IOptionsFactory<IdentityOptions>, AbpIdentityOptionsFactory>());

Loading…
Cancel
Save