fixes to permission grid

This commit is contained in:
Shaun Walker 2020-03-11 16:45:11 -04:00
parent fe98084324
commit f46b9a2fb2
3 changed files with 44 additions and 21 deletions

View File

@ -3,7 +3,7 @@
@inject IRoleService RoleService @inject IRoleService RoleService
@inject IUserService UserService @inject IUserService UserService
@if (roles != null) @if (permissions != null)
{ {
<br /> <br />
<table class="table"> <table class="table">
@ -52,7 +52,7 @@
{ {
var p = permission; var p = permission;
<td style="text-align: center;"> <td style="text-align: center;">
<TriStateCheckBox Value=@GetPermissionValue(p.Permissions, userid) Disabled=@GetPermissionDisabled(userid) OnChange="@(e => PermissionChanged(e, p.PermissionName, userid))" /> <TriStateCheckBox Value=@GetPermissionValue(p.Permissions, userid) Disabled=false OnChange="@(e => PermissionChanged(e, p.PermissionName, userid))" />
</td> </td>
} }
</tr> </tr>
@ -85,7 +85,7 @@
string permissionnames = ""; string permissionnames = "";
List<Role> roles; List<Role> roles;
List<PermissionString> permissions = new List<PermissionString>(); List<PermissionString> permissions;
List<User> users = new List<User>(); List<User> users = new List<User>();
string username = ""; string username = "";
string message = ""; string message = "";
@ -103,12 +103,13 @@
roles = await RoleService.GetRolesAsync(ModuleState.SiteId); roles = await RoleService.GetRolesAsync(ModuleState.SiteId);
roles.Insert(0, new Role { Name = Constants.AllUsersRole }); roles.Insert(0, new Role { Name = Constants.AllUsersRole });
foreach (string permissionname in permissionnames.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) if (!string.IsNullOrEmpty(Permissions))
{
permissions.Add(new PermissionString { PermissionName = permissionname, Permissions = "" });
}
if (Permissions != "")
{ {
permissions = new List<PermissionString>();
foreach (string permissionname in permissionnames.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
permissions.Add(new PermissionString { PermissionName = permissionname, Permissions = "" });
}
foreach (PermissionString permissionstring in UserSecurity.GetPermissionStrings(Permissions)) foreach (PermissionString permissionstring in UserSecurity.GetPermissionStrings(Permissions))
{ {
if (permissions.Find(item => item.PermissionName == permissionstring.PermissionName) != null) if (permissions.Find(item => item.PermissionName == permissionstring.PermissionName) != null)
@ -212,6 +213,21 @@
public string GetPermissions() public string GetPermissions()
{ {
ValidatePermissions();
return UserSecurity.SetPermissionStrings(permissions); return UserSecurity.SetPermissionStrings(permissions);
} }
private void ValidatePermissions()
{
PermissionString permission;
for (int i = 0; i < permissions.Count; i++)
{
permission = permissions[i];
List<string> ids = permission.Permissions.Split(';').ToList();
ids.Remove("!" + Constants.AllUsersRole); // remove deny all users
ids.Remove("!" + Constants.RegisteredRole); // remove deny registered users
permission.Permissions = string.Join(";", ids.ToArray());
permissions[i] = permission;
}
}
} }

View File

@ -1,6 +1,6 @@
@namespace Oqtane.Modules.Controls @namespace Oqtane.Modules.Controls
<img src="@src" title="@title" disabled=@Disabled @onclick="SetValue" /> <img src="@src" title="@title" @onclick="SetValue" />
@code { @code {
[Parameter] [Parameter]
@ -24,20 +24,23 @@
private void SetValue() private void SetValue()
{ {
switch (value) if (!Disabled)
{ {
case true: switch (value)
value = false; {
break; case true:
case false: value = false;
value = null; break;
break; case false:
case null: value = null;
value = true; break;
break; case null:
value = true;
break;
}
SetImage();
OnChange(value);
} }
SetImage();
OnChange(value);
} }
private void SetImage() private void SetImage()

View File

@ -85,6 +85,10 @@ namespace Oqtane.Repository
{ {
_permissions.UpdatePermissions(SiteId, "ModuleDefinition", moduledef.ModuleDefinitionId, moduledefinition.Permissions); _permissions.UpdatePermissions(SiteId, "ModuleDefinition", moduledef.ModuleDefinitionId, moduledefinition.Permissions);
} }
else
{
moduledefinition.Permissions = _permissions.EncodePermissions(moduledef.ModuleDefinitionId, permissions);
}
// remove module definition from list // remove module definition from list
moduledefs.Remove(moduledef); moduledefs.Remove(moduledef);
} }