added AbpFeatureManagementDomainTenantManagementModule And policy

pull/905/head
Yunus Emre Kalkan 7 years ago
parent 8a28f5e303
commit bdfcb6f6e8

@ -34,6 +34,8 @@ namespace Volo.Abp.FeatureManagement
public async Task<FeatureListDto> GetAsync([NotNull] string providerName, [NotNull] string providerKey)
{
await CheckProviderPolicy(providerName);
var featureDefinitions = _featureDefinitionManager.GetAll();
var features = new List<FeatureDto>();
@ -56,6 +58,8 @@ namespace Volo.Abp.FeatureManagement
public async Task UpdateAsync([NotNull] string providerName, [NotNull] string providerKey, UpdateFeaturesDto input)
{
await CheckProviderPolicy(providerName);
foreach (var feature in input.Features)
{
await _featureManager.SetAsync(feature.Name, feature.Value, providerName, providerKey);
@ -74,5 +78,16 @@ namespace Volo.Abp.FeatureManagement
}
}
}
protected virtual async Task CheckProviderPolicy(string providerName)
{
var policyName = Options.ProviderPolicies.GetOrDefault(providerName);
if (policyName.IsNullOrEmpty())
{
throw new AbpException($"No policy defined to get/set permissions for the provider '{policyName}'. Use {nameof(FeatureManagementOptions)} to map the policy.");
}
await AuthorizationService.CheckAsync(policyName);
}
}
}

@ -21,7 +21,6 @@ namespace Volo.Abp.FeatureManagement
{
options.Providers.Add<DefaultValueFeatureManagementProvider>();
options.Providers.Add<EditionFeatureManagementProvider>();
options.Providers.Add<TenantFeatureManagementProvider>();
});
Configure<VirtualFileSystemOptions>(options =>

@ -1,4 +1,5 @@
using Volo.Abp.Collections;
using System.Collections.Generic;
using Volo.Abp.Collections;
namespace Volo.Abp.FeatureManagement
{
@ -6,9 +7,12 @@ namespace Volo.Abp.FeatureManagement
{
public ITypeList<IFeatureManagementProvider> Providers { get; }
public Dictionary<string, string> ProviderPolicies { get; }
public FeatureManagementOptions()
{
Providers = new TypeList<IFeatureManagementProvider>();
ProviderPolicies = new Dictionary<string, string>();
}
}
}

@ -25,14 +25,16 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.TenantManagement.W
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.TenantManagement.Application.Tests", "test\Volo.Abp.TenantManagement.Application.Tests\Volo.Abp.TenantManagement.Application.Tests.csproj", "{72445B2D-07FA-4A35-A3D6-FF4ACE299BF4}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.EntityFrameworkCore.Tests", "test\Volo.Abp.TenantManagement.EntityFrameworkCore.Tests\Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj", "{A2BB8897-EBDB-46BB-B885-F8635B21F376}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.TenantManagement.EntityFrameworkCore.Tests", "test\Volo.Abp.TenantManagement.EntityFrameworkCore.Tests\Volo.Abp.TenantManagement.EntityFrameworkCore.Tests.csproj", "{A2BB8897-EBDB-46BB-B885-F8635B21F376}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.MongoDB", "src\Volo.Abp.TenantManagement.MongoDB\Volo.Abp.TenantManagement.MongoDB.csproj", "{ED95242E-3C31-4A89-9C62-93B306EFEB15}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.TenantManagement.MongoDB", "src\Volo.Abp.TenantManagement.MongoDB\Volo.Abp.TenantManagement.MongoDB.csproj", "{ED95242E-3C31-4A89-9C62-93B306EFEB15}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.TenantManagement.MongoDB.Tests", "test\Volo.Abp.TenantManagement.MongoDB.Tests\Volo.Abp.TenantManagement.MongoDB.Tests.csproj", "{F75B4C54-A5F1-4101-99F5-A5B868A5146B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.TenantManagement.MongoDB.Tests", "test\Volo.Abp.TenantManagement.MongoDB.Tests\Volo.Abp.TenantManagement.MongoDB.Tests.csproj", "{F75B4C54-A5F1-4101-99F5-A5B868A5146B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.TenantManagement.TestBase", "test\Volo.Abp.TenantManagement.TestBase\Volo.Abp.TenantManagement.TestBase.csproj", "{C3BAD6E8-00CD-4283-9416-64287BB5B265}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.FeatureManagement.Domain.TenantManagement", "src\Volo.Abp.FeatureManagement.Domain.TenantManagement\Volo.Abp.FeatureManagement.Domain.TenantManagement.csproj", "{7A5E7998-62CF-418B-A452-0FCB4CB853CC}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -91,6 +93,10 @@ Global
{C3BAD6E8-00CD-4283-9416-64287BB5B265}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C3BAD6E8-00CD-4283-9416-64287BB5B265}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C3BAD6E8-00CD-4283-9416-64287BB5B265}.Release|Any CPU.Build.0 = Release|Any CPU
{7A5E7998-62CF-418B-A452-0FCB4CB853CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7A5E7998-62CF-418B-A452-0FCB4CB853CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7A5E7998-62CF-418B-A452-0FCB4CB853CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7A5E7998-62CF-418B-A452-0FCB4CB853CC}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -109,6 +115,7 @@ Global
{ED95242E-3C31-4A89-9C62-93B306EFEB15} = {799CA525-4748-421A-9892-05C68BB2FA13}
{F75B4C54-A5F1-4101-99F5-A5B868A5146B} = {C6941869-A9FC-4BEA-AD3F-C1E104826ECA}
{C3BAD6E8-00CD-4283-9416-64287BB5B265} = {C6941869-A9FC-4BEA-AD3F-C1E104826ECA}
{7A5E7998-62CF-418B-A452-0FCB4CB853CC} = {799CA525-4748-421A-9892-05C68BB2FA13}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7C258726-2CE0-44D3-A2D7-71812E8F505C}

@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Abp.TenantManagement.Domain.Shared\Volo.Abp.TenantManagement.Domain.Shared.csproj" />
<ProjectReference Include="..\..\..\feature-management\src\Volo.Abp.FeatureManagement.Domain\Volo.Abp.FeatureManagement.Domain.csproj" />
</ItemGroup>
</Project>

@ -0,0 +1,18 @@
using Volo.Abp.Features;
using Volo.Abp.Modularity;
namespace Volo.Abp.FeatureManagement.TenantManagement
{
public class AbpFeatureManagementDomainTenantManagementModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<FeatureManagementOptions>(options =>
{
options.Providers.Add<TenantFeatureManagementProvider>();
options.ProviderPolicies[TenantFeatureValueProvider.ProviderName] = "AbpTenantManagement.Tenants.ManageFeatures";
});
}
}
}

@ -11,7 +11,7 @@ namespace Volo.Abp.FeatureManagement
protected ICurrentTenant CurrentTenant { get; }
public TenantFeatureManagementProvider(
IFeatureManagementStore store,
IFeatureManagementStore store,
ICurrentTenant currentTenant)
: base(store)
{

@ -8,12 +8,13 @@ namespace Volo.Abp.TenantManagement
{
public override void Define(IPermissionDefinitionContext context)
{
var identityGroup = context.AddGroup(TenantManagementPermissions.GroupName, L("Permission:TenantManagement"));
var tenantManagementGroup = context.AddGroup(TenantManagementPermissions.GroupName, L("Permission:TenantManagement"));
var rolesPermission = identityGroup.AddPermission(TenantManagementPermissions.Tenants.Default, L("Permission:TenantManagement"));
rolesPermission.AddChild(TenantManagementPermissions.Tenants.Create, L("Permission:Create"));
rolesPermission.AddChild(TenantManagementPermissions.Tenants.Update, L("Permission:Edit"));
rolesPermission.AddChild(TenantManagementPermissions.Tenants.Delete, L("Permission:Delete"));
var tenantsPermission = tenantManagementGroup.AddPermission(TenantManagementPermissions.Tenants.Default, L("Permission:TenantManagement"));
tenantsPermission.AddChild(TenantManagementPermissions.Tenants.Create, L("Permission:Create"));
tenantsPermission.AddChild(TenantManagementPermissions.Tenants.Update, L("Permission:Edit"));
tenantsPermission.AddChild(TenantManagementPermissions.Tenants.Delete, L("Permission:Delete"));
tenantsPermission.AddChild(TenantManagementPermissions.Tenants.ManageFeatures, L("Permission:ManageFeatures"));
}
private static LocalizableString L(string name)

@ -4,6 +4,7 @@
"Permission:TenantManagement": "Tenant management",
"Permission:Create": "Create",
"Permission:Edit": "Edit",
"Permission:Delete": "Delete"
"Permission:Delete": "Delete",
"Permission:ManageFeatures": "Manage features"
}
}

@ -4,6 +4,7 @@
"Permission:TenantManagement": "Müşteri yönetimi",
"Permission:Create": "Oluşturma",
"Permission:Edit": "Düzenleme",
"Permission:Delete": "Silme"
"Permission:Delete": "Silme",
"Permission:ManageFeatures": "Özellikleri yönet"
}
}

@ -10,6 +10,7 @@
public const string Create = Default + ".Create";
public const string Update = Default + ".Update";
public const string Delete = Default + ".Delete";
public const string ManageFeatures = Default + ".ManageFeatures";
}
}
}
Loading…
Cancel
Save