From 612954a3f67ff49221c6ac811a4941e0aa029e37 Mon Sep 17 00:00:00 2001 From: Ahmet Date: Sun, 8 Nov 2020 16:13:04 +0300 Subject: [PATCH] Close: #5542 --- .../PermissionManagementModal.razor | 14 ++- .../PermissionManagementModal.razor.cs | 116 ++++++++++++------ 2 files changed, 91 insertions(+), 39 deletions(-) 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 7d567c45bd..36dec63b18 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 @@ -11,7 +11,7 @@ - @L["SelectAllInAllTabs"] + @L["SelectAllInAllTabs"] @@ -47,19 +47,25 @@ - @L["SelectAllInThisTab"] + + @L["SelectAllInThisTab"] + @foreach (var permission in group.Permissions) { - + @GetShownName(permission) 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 ec33dc5bff..6f1e4c1a4e 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 @@ -18,15 +18,23 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components private string _entityDisplayName; private List _groups; - private List _disabledPermissions; + private List _disabledPermissions = new List(); private string _selectedTabName; + + private int _grantedPermissionCount = 0; + private int _notGrantedPermissionCount = 0; private bool GrantAll { get { - return _groups != null && _groups.All(x => x.Permissions.All(y => y.IsGranted)); + if (_notGrantedPermissionCount == 0) + { + return true; + } + + return false; } set { @@ -35,13 +43,22 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components return; } - foreach (var permissionGroupDto in _groups) + _grantedPermissionCount = 0; + _notGrantedPermissionCount = 0; + + foreach (var permission in _groups.SelectMany(x => x.Permissions)) { - foreach (var permission in permissionGroupDto.Permissions) + if (!IsDisabledPermission(permission)) { - if (!IsDisabledPermission(permission)) + permission.IsGranted = value; + + if (value) { - permission.IsGranted = value; + _grantedPermissionCount++; + } + else + { + _notGrantedPermissionCount++; } } } @@ -58,13 +75,26 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components _entityDisplayName = result.EntityDisplayName; _groups = result.Groups; - _disabledPermissions = - _groups.SelectMany(x => x.Permissions) - .Where( - x => x.IsGranted && - x.GrantedProviders.All(y => y.ProviderName != _providerName) - ).ToList(); + _grantedPermissionCount = 0; + _notGrantedPermissionCount = 0; + foreach (var permission in _groups.SelectMany(x => x.Permissions)) + { + if (permission.IsGranted && permission.GrantedProviders.All(x => x.ProviderName != _providerName)) + { + _disabledPermissions.Add(permission); + continue; + } + if (permission.IsGranted) + { + _grantedPermissionCount++; + } + else + { + _notGrantedPermissionCount++; + } + } + _selectedTabName = GetNormalizedGroupName(_groups.First().Name); _modal.Show(); @@ -95,51 +125,67 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components return "PermissionGroup_" + name.Replace(".", "_"); } - private void GrantAllChanged(bool value) - { - GrantAll = value; - } - - private void GroupGrantAllChanged(bool value, string groupName) + private void GroupGrantAllChanged(bool value, PermissionGroupDto permissionGroup) { - foreach (var permission in _groups.First(x => x.Name == groupName).Permissions) + foreach (var permission in permissionGroup.Permissions) { if (!IsDisabledPermission(permission)) { - permission.IsGranted = value; + SetPermissionGrant(permission, value); } } } - private void PermissionChanged(bool value, string groupName, PermissionGrantInfoDto permission) + private void PermissionChanged(bool value, PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { - permission.IsGranted = value; + SetPermissionGrant(permission, value); - if (value == false) + if (value && permission.ParentName != null) + { + var parentPermission = GetParentPermission(permissionGroup, permission); + + SetPermissionGrant(parentPermission, true); + } + else if(value == false) { - var childPermissions = GetChildPermissions(groupName, permission); + var childPermissions = GetChildPermissions(permissionGroup, permission); - foreach (var permissionGrantInfoDto in childPermissions) + foreach (var childPermission in childPermissions) { - permissionGrantInfoDto.IsGranted = false; + SetPermissionGrant(childPermission, false); } } - else if (permission.ParentName != null) - { - var parentPermission = GetParentPermission(groupName, permission); + } - parentPermission.IsGranted = true; + private void SetPermissionGrant(PermissionGrantInfoDto permission, bool value) + { + if (permission.IsGranted == value) + { + return; } + + if (value) + { + _grantedPermissionCount++; + _notGrantedPermissionCount--; + } + else + { + _grantedPermissionCount--; + _notGrantedPermissionCount++; + } + + permission.IsGranted = value; } - - private PermissionGrantInfoDto GetParentPermission(string groupName, PermissionGrantInfoDto permission) + + private PermissionGrantInfoDto GetParentPermission(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { - return _groups.First(x => x.Name == groupName).Permissions.First(x => x.Name == permission.ParentName); + return permissionGroup.Permissions.First(x => x.Name == permission.ParentName); } - private List GetChildPermissions(string groupName, PermissionGrantInfoDto permission) + private List GetChildPermissions(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { - return _groups.First(x => x.Name == groupName).Permissions.Where(x => x.Name.StartsWith(permission.Name)).ToList(); + return permissionGroup.Permissions.Where(x => x.Name.StartsWith(permission.Name)).ToList(); } private bool IsDisabledPermission(PermissionGrantInfoDto permissionGrantInfo)