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

Loading…
Cancel
Save