diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor index 1f804c3c09..a0cd8335c6 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor @@ -62,7 +62,7 @@ @foreach (var permission in group.Permissions) { - + _permissionDepths = new Dictionary(); public PermissionManagementModal() { @@ -113,6 +115,11 @@ public partial class PermissionManagementModal _selectedTabName = GetNormalizedGroupName(_groups.First().Name); + foreach (var group in _groups) + { + SetPermissionDepths(group.Permissions, null, 0); + } + await InvokeAsync(_modal.Show); } catch (Exception ex) @@ -164,6 +171,18 @@ public partial class PermissionManagementModal return "PermissionGroup_" + name.Replace(".", "_"); } + protected virtual void SetPermissionDepths(List permissions, string currentParent, int currentDepth) + { + foreach (var item in permissions) + { + if (item.ParentName == currentParent) + { + _permissionDepths[item.Name] = currentDepth; + SetPermissionDepths(permissions, item.Name, currentDepth + 1); + } + } + } + protected virtual void GroupGrantAllChanged(bool value, PermissionGroupDto permissionGroup) { foreach (var permission in permissionGroup.Permissions) @@ -179,11 +198,9 @@ public partial class PermissionManagementModal { SetPermissionGrant(permission, value); - if (value && permission.ParentName != null) + if (value) { - var parentPermission = GetParentPermission(permissionGroup, permission); - - SetPermissionGrant(parentPermission, true); + SetParentPermissionGrant(permissionGroup, permission); } else if (value == false) { @@ -196,6 +213,20 @@ public partial class PermissionManagementModal } } + private void SetParentPermissionGrant(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) + { + if(permission.ParentName == null) + { + return; + } + + var parentPermission = GetParentPermission(permissionGroup, permission); + SetPermissionGrant(parentPermission, true); + + SetParentPermissionGrant(permissionGroup, parentPermission); + + } + private void SetPermissionGrant(PermissionGrantInfoDto permission, bool value) { if (permission.IsGranted == value)