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 0680ac9390..d2c2e092d5 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 @@ -81,39 +81,48 @@ public partial class PermissionManagementModal { return; } + _grantedPermissionCount = 0; _notGrantedPermissionCount = 0; await OnPermissionGroupSearchTextChangedAsync(string.Empty); - + foreach (var permission in _allGroups.SelectMany(x => x.Permissions)) { - if (!IsDisabledPermission(permission)) + if (IsDisabledPermission(permission)) { - permission.IsGranted = grantAll; + continue; + } - if (grantAll) - { - _grantedPermissionCount++; - } - else - { - _notGrantedPermissionCount++; - } + permission.IsGranted = grantAll; + + if (grantAll) + { + _grantedPermissionCount++; + } + else + { + _notGrantedPermissionCount++; } } + + await InvokeAsync(StateHasChanged); } - protected void NormalizePermissionGroup() + protected virtual void NormalizePermissionGroup(bool checkDisabledPermissions = true) { _selectAllDisabled = _groups.All(IsPermissionGroupDisabled); _grantedPermissionCount = 0; _notGrantedPermissionCount = 0; - _disabledPermissions.Clear(); + if (checkDisabledPermissions) + { + _disabledPermissions.Clear(); + } + foreach (var permission in _groups.SelectMany(x => x.Permissions)) { - if (permission.IsGranted && permission.GrantedProviders.All(x => x.ProviderName != _providerName)) + if (checkDisabledPermissions && permission.IsGranted && permission.GrantedProviders.All(x => x.ProviderName != _providerName)) { _disabledPermissions.Add(permission); continue; @@ -266,19 +275,19 @@ public partial class PermissionManagementModal permission.IsGranted = value; } - protected PermissionGrantInfoDto GetParentPermission(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) + protected virtual PermissionGrantInfoDto GetParentPermission(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { return permissionGroup.Permissions.First(x => x.Name == permission.ParentName); } - protected List GetChildPermissions(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) + protected virtual List GetChildPermissions(PermissionGroupDto permissionGroup, PermissionGrantInfoDto permission) { var childPermissions = new List(); GetChildPermissions(childPermissions, permissionGroup.Permissions, permission); return childPermissions; } - protected void GetChildPermissions(List allChildPermissions, List permissions, PermissionGrantInfoDto permission) + protected virtual void GetChildPermissions(List allChildPermissions, List permissions, PermissionGrantInfoDto permission) { var childPermissions = permissions.Where(x => x.ParentName == permission.Name).ToList(); if (childPermissions.Count == 0) @@ -294,7 +303,7 @@ public partial class PermissionManagementModal } } - protected bool IsDisabledPermission(PermissionGrantInfoDto permissionGrantInfo) + protected virtual bool IsDisabledPermission(PermissionGrantInfoDto permissionGrantInfo) { return _disabledPermissions.Any(x => x == permissionGrantInfo); } @@ -338,9 +347,9 @@ public partial class PermissionManagementModal } _permissionGroupSearchText = value; - _groups = _permissionGroupSearchText.IsNullOrWhiteSpace() ? _allGroups : _allGroups.Where(x => x.DisplayName.Contains(_permissionGroupSearchText, StringComparison.OrdinalIgnoreCase) || x.Permissions.Any(permission => permission.DisplayName.Contains(_permissionGroupSearchText, StringComparison.OrdinalIgnoreCase))).ToList(); + _groups = _permissionGroupSearchText.IsNullOrWhiteSpace() ? _allGroups.ToList() : _allGroups.Where(x => x.DisplayName.Contains(_permissionGroupSearchText, StringComparison.OrdinalIgnoreCase) || x.Permissions.Any(permission => permission.DisplayName.Contains(_permissionGroupSearchText, StringComparison.OrdinalIgnoreCase))).ToList(); - NormalizePermissionGroup(); + NormalizePermissionGroup(false); await InvokeAsync(StateHasChanged); }