From 3e86d7913375d02380029c90dfa54466122e6457 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ahmet=20=C3=87otur?= Date: Thu, 17 Sep 2020 00:08:06 +0300 Subject: [PATCH] Improve permission management blazor modal --- .../PermissionManagementModal.razor | 3 +- .../PermissionManagementModal.razor.cs | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) 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 e94319c9ff..cc26b5370a 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 @@ -58,7 +58,8 @@ @permission.DisplayName diff --git a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs index 40333fdc80..8ff1a99796 100644 --- a/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs +++ b/modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs @@ -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 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);