Browse Source

Refactor permission management logic to fix 'Grant all permissions' problem

pull/22144/head
liangshiwei 12 months ago
parent
commit
cd39b3e153
  1. 2
      modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor
  2. 71
      modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs

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

@ -24,7 +24,7 @@
</Column>
<Column ColumnSize="ColumnSize.IsAuto">
<Field>
<Check Disabled="_selectAllDisabled" Cursor="Cursor.Pointer" @bind-Checked="@GrantAll" TValue="bool">
<Check Disabled="_selectAllDisabled" Cursor="Cursor.Pointer" CheckedChanged="@GrantAllAsync" Checked="@GrantAll" TValue="bool">
@L["SelectAllInAllTabs"]
</Check>
</Field>

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

@ -38,43 +38,7 @@ public partial class PermissionManagementModal
protected string _permissionGroupSearchText;
protected bool GrantAll {
get {
if (_notGrantedPermissionCount == 0)
{
return true;
}
return false;
}
set {
if (_groups == null)
{
return;
}
_grantedPermissionCount = 0;
_notGrantedPermissionCount = 0;
Task.Run(()=>OnPermissionGroupSearchTextChangedAsync(null));
foreach (var permission in _allGroups.SelectMany(x => x.Permissions))
{
if (!IsDisabledPermission(permission))
{
permission.IsGranted = value;
if (value)
{
_grantedPermissionCount++;
}
else
{
_notGrantedPermissionCount++;
}
}
}
}
}
protected bool GrantAll { get; set; }
protected Dictionary<string, int> _permissionDepths = new Dictionary<string, int>();
@ -98,6 +62,8 @@ public partial class PermissionManagementModal
_groups = _allGroups.ToList();
NormalizePermissionGroup();
GrantAll = _notGrantedPermissionCount == 0;
await InvokeAsync(_modal.Show);
}
@ -106,6 +72,37 @@ public partial class PermissionManagementModal
await HandleErrorAsync(ex);
}
}
protected virtual async Task GrantAllAsync(bool grantAll)
{
GrantAll = grantAll;
if (_allGroups == null)
{
return;
}
_grantedPermissionCount = 0;
_notGrantedPermissionCount = 0;
await OnPermissionGroupSearchTextChangedAsync(string.Empty);
foreach (var permission in _allGroups.SelectMany(x => x.Permissions))
{
if (!IsDisabledPermission(permission))
{
permission.IsGranted = grantAll;
if (grantAll)
{
_grantedPermissionCount++;
}
else
{
_notGrantedPermissionCount++;
}
}
}
}
protected void NormalizePermissionGroup()
{

Loading…
Cancel
Save