From 986a220c0733dd9d6ada66a405297fa7eeed979a Mon Sep 17 00:00:00 2001 From: Halil ibrahim Kalkan Date: Mon, 4 Mar 2019 10:55:01 +0300 Subject: [PATCH] Auto register permission definition providers. --- .../Authorization/AbpAuthorizationModule.cs | 24 +++++++++++++++++-- .../Volo/Abp/Features/AbpFeaturesModule.cs | 10 ++++---- .../Mvc/AbpAspNetCoreMvcTestModule.cs | 5 ---- .../AbpAuthorizationTestModule.cs | 9 ------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs index 3ea2789e8e..880673f86b 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs @@ -1,4 +1,6 @@ -using Microsoft.AspNetCore.Authorization; +using System; +using System.Collections.Generic; +using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Authorization.Permissions; using Volo.Abp.Localization; @@ -16,7 +18,7 @@ namespace Volo.Abp.Authorization public override void PreConfigureServices(ServiceConfigurationContext context) { context.Services.OnRegistred(AuthorizationInterceptorRegistrar.RegisterIfNeeded); - //TODO: Auto Add Providers to PermissionOptions just like did in AbpFeaturesModule.AutoAddProviders + AutoAddDefinitionProviders(context.Services); } public override void ConfigureServices(ServiceConfigurationContext context) @@ -32,5 +34,23 @@ namespace Volo.Abp.Authorization options.ValueProviders.Add(); }); } + + private static void AutoAddDefinitionProviders(IServiceCollection services) + { + var definitionProviders = new List(); + + services.OnRegistred(context => + { + if (typeof(IPermissionDefinitionProvider).IsAssignableFrom(context.ImplementationType)) + { + definitionProviders.Add(context.ImplementationType); + } + }); + + services.Configure(options => + { + options.DefinitionProviders.AddIfNotContains(definitionProviders); + }); + } } } diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs b/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs index db64ce6c57..9179a2ff7b 100644 --- a/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs +++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs @@ -15,24 +15,24 @@ namespace Volo.Abp.Features { public override void PreConfigureServices(ServiceConfigurationContext context) { - AutoAddProviders(context.Services); + AutoAddDefinitionProviders(context.Services); } - private static void AutoAddProviders(IServiceCollection services) + private static void AutoAddDefinitionProviders(IServiceCollection services) { - var featureDefinitionProviders = new List(); + var definitionProviders = new List(); services.OnRegistred(context => { if (typeof(IFeatureDefinitionProvider).IsAssignableFrom(context.ImplementationType)) { - featureDefinitionProviders.Add(context.ImplementationType); + definitionProviders.Add(context.ImplementationType); } }); services.Configure(options => { - options.DefinitionProviders.AddIfNotContains(featureDefinitionProviders); + options.DefinitionProviders.AddIfNotContains(definitionProviders); }); } } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs index b079b38188..014cee2077 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs @@ -57,11 +57,6 @@ namespace Volo.Abp.AspNetCore.Mvc }); }); - Configure(options => - { - options.DefinitionProviders.Add(); - }); - Configure(options => { options.FileSets.AddEmbedded(); diff --git a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs index 9b539e85be..51337ae871 100644 --- a/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs +++ b/framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs @@ -1,5 +1,4 @@ using Microsoft.Extensions.DependencyInjection; -using Volo.Abp.Authorization.Permissions; using Volo.Abp.Authorization.TestServices; using Volo.Abp.Autofac; using Volo.Abp.Modularity; @@ -20,13 +19,5 @@ namespace Volo.Abp.Authorization } }); } - - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - options.DefinitionProviders.TryAdd(); - }); - } } } \ No newline at end of file