From d11fb4e500bb95227a6d0f6c67abe015f12700b1 Mon Sep 17 00:00:00 2001 From: Hanpaopao <510423039@qq.com> Date: Fri, 10 Jan 2025 21:06:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9D=83=E9=99=90?= =?UTF-8?q?=E5=B1=82=E7=BA=A7bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...bpProApplicationConfigurationAppService.cs | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/AbpProApplicationConfigurationAppService.cs b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/AbpProApplicationConfigurationAppService.cs index b6f299fb..21613f1d 100644 --- a/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/AbpProApplicationConfigurationAppService.cs +++ b/aspnet-core/modules/BasicManagement/src/Lion.AbpPro.BasicManagement.Application/ApplicationConfigurations/AbpProApplicationConfigurationAppService.cs @@ -164,7 +164,7 @@ public class AbpProApplicationConfigurationAppService : ApplicationService, IAbp } } - var policies = BuildGrantedPolicies(authConfig.GrantedPolicies.Select(e => e.Key).ToList()); + var policies = BuildGrantedPolicies(authConfig.GrantedPolicies.Select(e => e.Key).ToList(), result); foreach (var item in policies) { if (authConfig.GrantedPolicies.Any(e => e.Key == item)) continue; @@ -174,18 +174,22 @@ public class AbpProApplicationConfigurationAppService : ApplicationService, IAbp return authConfig; } - private List BuildGrantedPolicies(List grantedPolicies) + private List BuildGrantedPolicies(List grantedPolicies, MultiplePermissionGrantResult permissions) { var result = new List(); foreach (var policy in grantedPolicies) { - result.AddRange(GetPolicy(policy)); + result.AddRange(GetPolicy(policy, permissions)); } return result.Distinct().ToList(); } - private List GetPolicy(string policy) + /// + /// 获取权限 + /// + /// 比如设置了角色有权限AbpIdentity.Roles.Update,但是没有AbpIdentity.Roles权限,那么这个时候AbpIdentity.Roles应该是false + private List GetPolicy(string policy, MultiplePermissionGrantResult permissions) { var result = new List(); var split = policy.Split('.', StringSplitOptions.RemoveEmptyEntries); @@ -205,8 +209,13 @@ public class AbpProApplicationConfigurationAppService : ApplicationService, IAbp if (!currentPolicy.IsNullOrWhiteSpace()) { - result.Add(currentPolicy); - result.AddRange(GetPolicy(currentPolicy)); + var currentPolicyValue = permissions.Result.FirstOrDefault(e => e.Key == currentPolicy); + if (currentPolicyValue.Value == PermissionGrantResult.Granted) + { + result.Add(currentPolicy); + } + + result.AddRange(GetPolicy(currentPolicy, permissions)); } return result; @@ -327,11 +336,12 @@ public class AbpProApplicationConfigurationAppService : ApplicationService, IAbp { continue; } - + if (featureDefinition.Name == "SettingManagement.AllowChangingEmailSettings") { continue; } + result.Values[featureDefinition.Name] = await FeatureChecker.GetOrNullAsync(featureDefinition.Name); }