diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs index 0b7b61c326..aa9bfe0029 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Application/Volo/Abp/PermissionManagement/PermissionAppService.cs +++ b/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(); 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;