Browse Source

Refactor permission filtering logic for improved readability and performance.

pull/22214/head
maliming 2 years ago
parent
commit
2b0e68f6e1
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 25
      modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs

25
modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs

@ -49,9 +49,9 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
{ {
var groupDto = CreatePermissionGroupDto(group); var groupDto = CreatePermissionGroupDto(group);
var permissions = group.GetPermissionsWithChildren() var permissions = group.GetPermissionsWithChildren()
.Where(x => x.IsEnabled && .Where(x => x.IsEnabled)
(!x.Providers.Any() || x.Providers.Contains(providerName)) && .Where(x => !x.Providers.Any() || x.Providers.Contains(providerName))
x.MultiTenancySide.HasFlag(multiTenancySide)); .Where(x => x.MultiTenancySide.HasFlag(multiTenancySide));
var neededCheckPermissions = new List<PermissionDefinition>(); var neededCheckPermissions = new List<PermissionDefinition>();
foreach (var permission in permissions) foreach (var permission in permissions)
@ -67,6 +67,11 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
} }
} }
if (!neededCheckPermissions.Any())
{
continue;
}
groupDto.Permissions.AddRange(neededCheckPermissions.Select(CreatePermissionGrantInfoDto)); groupDto.Permissions.AddRange(neededCheckPermissions.Select(CreatePermissionGrantInfoDto));
permissionGroups.Add(groupDto); permissionGroups.Add(groupDto);
} }
@ -78,9 +83,14 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
foreach (var permissionGroup in permissionGroups) foreach (var permissionGroup in permissionGroups)
{ {
foreach (var permission in permissionGroup.Permissions.Where(x => multipleGrantInfo.Result.Any(y => y.Name == x.Name))) foreach (var permission in permissionGroup.Permissions)
{ {
var grantInfo = multipleGrantInfo.Result.First(x => x.Name == permission.Name); var grantInfo = multipleGrantInfo.Result.FirstOrDefault(x => x.Name == permission.Name);
if (grantInfo == null)
{
continue;
}
permission.IsGranted = grantInfo.IsGranted; permission.IsGranted = grantInfo.IsGranted;
permission.GrantedProviders = grantInfo.Providers.Select(x => new ProviderInfoDto permission.GrantedProviders = grantInfo.Providers.Select(x => new ProviderInfoDto
{ {
@ -89,7 +99,10 @@ public class PermissionAppService : ApplicationService, IPermissionAppService
}).ToList(); }).ToList();
} }
result.Groups.Add(permissionGroup); if (permissionGroup.Permissions.Any())
{
result.Groups.Add(permissionGroup);
}
} }
return result; return result;

Loading…
Cancel
Save