Improve permission management blazor modal

pull/5391/head
Ahmet Çotur 5 years ago
parent 2cafa4c836
commit 3e86d79133

@ -58,7 +58,8 @@
<Check
Disabled="@(IsDisabledPermission(permission))"
Cursor="Cursor.Pointer"
@bind-checked="@permission.IsGranted"
Checked="@permission.IsGranted"
CheckedChanged="@(b => PermissionChanged(b, group.Name, permission))"
TValue="bool">
@permission.DisplayName
</Check>

@ -111,6 +111,37 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components
}
}
private void PermissionChanged(bool value, string groupName, PermissionGrantInfoDto permission)
{
permission.IsGranted = value;
if (value == false)
{
var childPermissions = GetChildPermissions(groupName, permission);
foreach (var permissionGrantInfoDto in childPermissions)
{
permissionGrantInfoDto.IsGranted = false;
}
}
else if (permission.ParentName != null)
{
var parentPermission = GetParentPermission(groupName, permission);
parentPermission.IsGranted = true;
}
}
private PermissionGrantInfoDto GetParentPermission(string groupName, PermissionGrantInfoDto permission)
{
return _groups.First(x => x.Name == groupName).Permissions.First(x => x.Name == permission.ParentName);
}
private List<PermissionGrantInfoDto> GetChildPermissions(string groupName, PermissionGrantInfoDto permission)
{
return _groups.First(x => x.Name == groupName).Permissions.Where(x => x.Name.StartsWith(permission.Name)).ToList();
}
private bool IsDisabledPermission(PermissionGrantInfoDto permissionGrantInfo)
{
return _disabledPermissions.Any(x => x == permissionGrantInfo);

Loading…
Cancel
Save