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); }