Browse Source

Merge pull request #18343 from abpframework/liangshiwei/permission

Support nested permission
pull/18399/head
Enis Necipoglu 3 years ago
committed by GitHub
parent
commit
1fc84b69f3
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor
  2. 39
      modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs

2
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor

@ -62,7 +62,7 @@
@foreach (var permission in group.Permissions)
{
<Field Margin="permission.ParentName != null ? Margin.Is3.OnAll : Margin.Is3.OnY">
<Field Style="@($"margin-inline-start: {_permissionDepths[permission.Name] * 20}px")">
<Check
Disabled="@(IsDisabledPermission(permission))"
Cursor="Cursor.Pointer"

39
modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs

@ -71,6 +71,8 @@ public partial class PermissionManagementModal
}
}
}
protected Dictionary<string, int> _permissionDepths = new Dictionary<string, int>();
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<PermissionGrantInfoDto> 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)

Loading…
Cancel
Save