From 04b0518f420bb9cbe8e1792d8da4286105b7122a Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 10 Nov 2020 16:37:20 +0800 Subject: [PATCH] Switch to host side in ClientPermissionValueProvider & ClientPermissionManagementProvider. Resolve #6022 --- .../ClientPermissionValueProvider.cs | 16 ++++++--- .../IdentityServerDataSeedContributor.cs | 3 +- .../ClientPermissionManagementProvider.cs | 35 ++++++++++++++++++- .../IdentityServerDataSeedContributor.cs | 3 +- .../IdentityServerDataSeedContributor.cs | 3 +- 5 files changed, 51 insertions(+), 9 deletions(-) diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/ClientPermissionValueProvider.cs b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/ClientPermissionValueProvider.cs index c1d9b3a6dc..b3b68b109c 100644 --- a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/ClientPermissionValueProvider.cs +++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Permissions/ClientPermissionValueProvider.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using Volo.Abp.MultiTenancy; using Volo.Abp.Security.Claims; namespace Volo.Abp.Authorization.Permissions @@ -9,10 +10,12 @@ namespace Volo.Abp.Authorization.Permissions public override string Name => ProviderName; - public ClientPermissionValueProvider(IPermissionStore permissionStore) + protected ICurrentTenant CurrentTenant { get; } + + public ClientPermissionValueProvider(IPermissionStore permissionStore, ICurrentTenant currentTenant) : base(permissionStore) { - + CurrentTenant = currentTenant; } public async override Task CheckAsync(PermissionValueCheckContext context) @@ -24,9 +27,12 @@ namespace Volo.Abp.Authorization.Permissions return PermissionGrantResult.Undefined; } - return await PermissionStore.IsGrantedAsync(context.Permission.Name, Name, clientId) - ? PermissionGrantResult.Granted - : PermissionGrantResult.Undefined; + using (CurrentTenant.Change(null)) + { + return await PermissionStore.IsGrantedAsync(context.Permission.Name, Name, clientId) + ? PermissionGrantResult.Granted + : PermissionGrantResult.Undefined; + } } } } diff --git a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs index da6f57f337..9eee928e53 100644 --- a/modules/cms-kit/host/Volo.CmsKit.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs +++ b/modules/cms-kit/host/Volo.CmsKit.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs @@ -208,7 +208,8 @@ namespace Volo.CmsKit.IdentityServer await _permissionDataSeeder.SeedAsync( ClientPermissionValueProvider.ProviderName, name, - permissions + permissions, + null ); } diff --git a/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs b/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs index bb4aa54de6..15d9952c74 100644 --- a/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs +++ b/modules/identityserver/src/Volo.Abp.PermissionManagement.Domain.IdentityServer/Volo/Abp/PermissionManagement/IdentityServer/ClientPermissionManagementProvider.cs @@ -1,4 +1,5 @@ -using Volo.Abp.Authorization.Permissions; +using System.Threading.Tasks; +using Volo.Abp.Authorization.Permissions; using Volo.Abp.Guids; using Volo.Abp.MultiTenancy; @@ -19,5 +20,37 @@ namespace Volo.Abp.PermissionManagement.IdentityServer { } + + public override Task CheckAsync(string name, string providerName, string providerKey) + { + using (CurrentTenant.Change(null)) + { + return base.CheckAsync(name, providerName, providerKey); + } + } + + protected override Task GrantAsync(string name, string providerKey) + { + using (CurrentTenant.Change(null)) + { + return base.GrantAsync(name, providerKey); + } + } + + protected override Task RevokeAsync(string name, string providerKey) + { + using (CurrentTenant.Change(null)) + { + return base.RevokeAsync(name, providerKey); + } + } + + public override Task SetAsync(string name, string providerKey, bool isGranted) + { + using (CurrentTenant.Change(null)) + { + return base.SetAsync(name, providerKey, isGranted); + } + } } } diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs index ebb027fa86..30bef10812 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs @@ -274,7 +274,8 @@ namespace MyCompanyName.MyProjectName.IdentityServer await _permissionDataSeeder.SeedAsync( ClientPermissionValueProvider.ProviderName, name, - permissions + permissions, + null ); } diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs index f37a50da48..96ef096e33 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.IdentityServer/IdentityServer/IdentityServerDataSeedContributor.cs @@ -269,7 +269,8 @@ namespace MyCompanyName.MyProjectName.IdentityServer await _permissionDataSeeder.SeedAsync( ClientPermissionValueProvider.ProviderName, name, - permissions + permissions, + null ); }