pull/6113/head
Ahmet 5 years ago
parent 43b7474013
commit 612954a3f6

@ -11,7 +11,7 @@
<ModalBody MaxHeight="50">
<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>
<Divider />
@ -47,19 +47,25 @@
<Divider />
<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>
<Divider />
@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
Disabled="@(IsDisabledPermission(permission))"
Cursor="Cursor.Pointer"
Checked="@permission.IsGranted"
CheckedChanged="@(b => PermissionChanged(b, group.Name, permission))"
CheckedChanged="@(b => PermissionChanged(b, group, permission))"
TValue="bool">
@GetShownName(permission)
</Check>

@ -18,15 +18,23 @@ namespace Volo.Abp.PermissionManagement.Blazor.Components
private string _entityDisplayName;
private List<PermissionGroupDto> _groups;
private List<PermissionGrantInfoDto> _disabledPermissions;
private List<PermissionGrantInfoDto> _disabledPermissions = new List<PermissionGrantInfoDto>();
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<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)

Loading…
Cancel
Save