Browse Source

Close: #5542

pull/6113/head
Ahmet 6 years ago
parent
commit
612954a3f6
  1. 14
      modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor
  2. 116
      modules/permission-management/src/Volo.Abp.PermissionManagement.Blazor/Components/PermissionManagementModal.razor.cs

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

@ -11,7 +11,7 @@
<ModalBody MaxHeight="50"> <ModalBody MaxHeight="50">
<Field> <Field>
<Check Cursor="Cursor.Pointer" Checked="@GrantAll" CheckedChanged="@GrantAllChanged" TValue="bool">@L["SelectAllInAllTabs"]</Check> <Check Cursor="Cursor.Pointer" @bind-Checked="@GrantAll" TValue="bool">@L["SelectAllInAllTabs"]</Check>
</Field> </Field>
<Divider /> <Divider />
@ -47,19 +47,25 @@
<Divider /> <Divider />
<Field> <Field>
<Check Checked="@(group.Permissions.All(x => x.IsGranted))" Cursor="Cursor.Pointer" CheckedChanged="@(b => GroupGrantAllChanged(b, group.Name))" TValue="bool">@L["SelectAllInThisTab"]</Check> <Check
Checked="@(group.Permissions.All(x => x.IsGranted))"
Cursor="Cursor.Pointer"
CheckedChanged="@(b => GroupGrantAllChanged(b, group))"
TValue="bool">
@L["SelectAllInThisTab"]
</Check>
</Field> </Field>
<Divider /> <Divider />
@foreach (var permission in group.Permissions) @foreach (var permission in group.Permissions)
{ {
<Field Margin="permission.ParentName != null ? Blazorise.Margin.Is3.OnAll : Blazorise.Margin.Is0.OnAll"> <Field Margin="permission.ParentName != null ? Margin.Is3.OnAll : Margin.Is0.OnAll">
<Check <Check
Disabled="@(IsDisabledPermission(permission))" Disabled="@(IsDisabledPermission(permission))"
Cursor="Cursor.Pointer" Cursor="Cursor.Pointer"
Checked="@permission.IsGranted" Checked="@permission.IsGranted"
CheckedChanged="@(b => PermissionChanged(b, group.Name, permission))" CheckedChanged="@(b => PermissionChanged(b, group, permission))"
TValue="bool"> TValue="bool">
@GetShownName(permission) @GetShownName(permission)
</Check> </Check>

116
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 string _entityDisplayName;
private List<PermissionGroupDto> _groups; private List<PermissionGroupDto> _groups;
private List<PermissionGrantInfoDto> _disabledPermissions; private List<PermissionGrantInfoDto> _disabledPermissions = new List<PermissionGrantInfoDto>();
private string _selectedTabName; private string _selectedTabName;
private int _grantedPermissionCount = 0;
private int _notGrantedPermissionCount = 0;
private bool GrantAll private bool GrantAll
{ {
get get
{ {
return _groups != null && _groups.All(x => x.Permissions.All(y => y.IsGranted)); if (_notGrantedPermissionCount == 0)
{
return true;
}
return false;
} }
set set
{ {
@ -35,13 +43,22 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components
return; 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; _entityDisplayName = result.EntityDisplayName;
_groups = result.Groups; _groups = result.Groups;
_disabledPermissions = _grantedPermissionCount = 0;
_groups.SelectMany(x => x.Permissions) _notGrantedPermissionCount = 0;
.Where( foreach (var permission in _groups.SelectMany(x => x.Permissions))
x => x.IsGranted && {
x.GrantedProviders.All(y => y.ProviderName != _providerName) if (permission.IsGranted && permission.GrantedProviders.All(x => x.ProviderName != _providerName))
).ToList(); {
_disabledPermissions.Add(permission);
continue;
}
if (permission.IsGranted)
{
_grantedPermissionCount++;
}
else
{
_notGrantedPermissionCount++;
}
}
_selectedTabName = GetNormalizedGroupName(_groups.First().Name); _selectedTabName = GetNormalizedGroupName(_groups.First().Name);
_modal.Show(); _modal.Show();
@ -95,51 +125,67 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components
return "PermissionGroup_" + name.Replace(".", "_"); return "PermissionGroup_" + name.Replace(".", "_");
} }
private void GrantAllChanged(bool value) private void GroupGrantAllChanged(bool value, PermissionGroupDto permissionGroup)
{
GrantAll = value;
}
private void GroupGrantAllChanged(bool value, string groupName)
{ {
foreach (var permission in _groups.First(x => x.Name == groupName).Permissions) foreach (var permission in permissionGroup.Permissions)
{ {
if (!IsDisabledPermission(permission)) 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<PermissionGrantInfoDto> GetChildPermissions(string groupName, PermissionGrantInfoDto permission) private List<PermissionGrantInfoDto> 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) private bool IsDisabledPermission(PermissionGrantInfoDto permissionGrantInfo)

Loading…
Cancel
Save