Skip to content

Commit

Permalink
fix: 修复权限层级bug
Browse files Browse the repository at this point in the history
  • Loading branch information
WangJunZzz committed Jan 10, 2025
1 parent 1e09358 commit d11fb4e
Showing 1 changed file with 17 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ protected virtual async Task<ApplicationAuthConfigurationDto> GetAuthConfigAsync
}
}

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;
Expand All @@ -174,18 +174,22 @@ protected virtual async Task<ApplicationAuthConfigurationDto> GetAuthConfigAsync
return authConfig;
}

private List<string> BuildGrantedPolicies(List<string> grantedPolicies)
private List<string> BuildGrantedPolicies(List<string> grantedPolicies, MultiplePermissionGrantResult permissions)
{
var result = new List<string>();
foreach (var policy in grantedPolicies)
{
result.AddRange(GetPolicy(policy));
result.AddRange(GetPolicy(policy, permissions));
}

return result.Distinct().ToList();
}

private List<string> GetPolicy(string policy)
/// <summary>
/// 获取权限
/// </summary>
/// <remarks>比如设置了角色有权限AbpIdentity.Roles.Update,但是没有AbpIdentity.Roles权限,那么这个时候AbpIdentity.Roles应该是false</remarks>
private List<string> GetPolicy(string policy, MultiplePermissionGrantResult permissions)
{
var result = new List<string>();
var split = policy.Split('.', StringSplitOptions.RemoveEmptyEntries);
Expand All @@ -205,8 +209,13 @@ private List<string> GetPolicy(string policy)

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;
Expand Down Expand Up @@ -327,11 +336,12 @@ protected virtual async Task<ApplicationFeatureConfigurationDto> GetFeaturesConf
{
continue;
}

if (featureDefinition.Name == "SettingManagement.AllowChangingEmailSettings")
{
continue;
}

result.Values[featureDefinition.Name] = await FeatureChecker.GetOrNullAsync(featureDefinition.Name);
}

Expand Down

0 comments on commit d11fb4e

Please sign in to comment.