Browse Source

Auto register permission definition providers.

pull/859/head
Halil ibrahim Kalkan 8 years ago
parent
commit
986a220c07
  1. 24
      framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/AbpAuthorizationModule.cs
  2. 10
      framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs
  3. 5
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs
  4. 9
      framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs

24
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 Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Authorization.Permissions; using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Localization; using Volo.Abp.Localization;
@ -16,7 +18,7 @@ namespace Volo.Abp.Authorization
public override void PreConfigureServices(ServiceConfigurationContext context) public override void PreConfigureServices(ServiceConfigurationContext context)
{ {
context.Services.OnRegistred(AuthorizationInterceptorRegistrar.RegisterIfNeeded); 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) public override void ConfigureServices(ServiceConfigurationContext context)
@ -32,5 +34,23 @@ namespace Volo.Abp.Authorization
options.ValueProviders.Add<ClientPermissionValueProvider>(); options.ValueProviders.Add<ClientPermissionValueProvider>();
}); });
} }
private static void AutoAddDefinitionProviders(IServiceCollection services)
{
var definitionProviders = new List<Type>();
services.OnRegistred(context =>
{
if (typeof(IPermissionDefinitionProvider).IsAssignableFrom(context.ImplementationType))
{
definitionProviders.Add(context.ImplementationType);
}
});
services.Configure<PermissionOptions>(options =>
{
options.DefinitionProviders.AddIfNotContains(definitionProviders);
});
}
} }
} }

10
framework/src/Volo.Abp.Features/Volo/Abp/Features/AbpFeaturesModule.cs

@ -15,24 +15,24 @@ namespace Volo.Abp.Features
{ {
public override void PreConfigureServices(ServiceConfigurationContext context) 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<Type>(); var definitionProviders = new List<Type>();
services.OnRegistred(context => services.OnRegistred(context =>
{ {
if (typeof(IFeatureDefinitionProvider).IsAssignableFrom(context.ImplementationType)) if (typeof(IFeatureDefinitionProvider).IsAssignableFrom(context.ImplementationType))
{ {
featureDefinitionProviders.Add(context.ImplementationType); definitionProviders.Add(context.ImplementationType);
} }
}); });
services.Configure<FeatureOptions>(options => services.Configure<FeatureOptions>(options =>
{ {
options.DefinitionProviders.AddIfNotContains(featureDefinitionProviders); options.DefinitionProviders.AddIfNotContains(definitionProviders);
}); });
} }
} }

5
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/AbpAspNetCoreMvcTestModule.cs

@ -57,11 +57,6 @@ namespace Volo.Abp.AspNetCore.Mvc
}); });
}); });
Configure<PermissionOptions>(options =>
{
options.DefinitionProviders.Add<TestPermissionDefinitionProvider>();
});
Configure<VirtualFileSystemOptions>(options => Configure<VirtualFileSystemOptions>(options =>
{ {
options.FileSets.AddEmbedded<AbpAspNetCoreMvcTestModule>(); options.FileSets.AddEmbedded<AbpAspNetCoreMvcTestModule>();

9
framework/test/Volo.Abp.Authorization.Tests/Volo/Abp/Authorization/AbpAuthorizationTestModule.cs

@ -1,5 +1,4 @@
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Authorization.Permissions;
using Volo.Abp.Authorization.TestServices; using Volo.Abp.Authorization.TestServices;
using Volo.Abp.Autofac; using Volo.Abp.Autofac;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
@ -20,13 +19,5 @@ namespace Volo.Abp.Authorization
} }
}); });
} }
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<PermissionOptions>(options =>
{
options.DefinitionProviders.TryAdd<AuthorizationTestPermissionDefinitionProvider>();
});
}
} }
} }
Loading…
Cancel
Save