diff --git a/Oqtane.Client/Modules/Controls/PermissionGrid.razor b/Oqtane.Client/Modules/Controls/PermissionGrid.razor
index fda498e1..c57ab192 100644
--- a/Oqtane.Client/Modules/Controls/PermissionGrid.razor
+++ b/Oqtane.Client/Modules/Controls/PermissionGrid.razor
@@ -3,7 +3,7 @@
@inject IRoleService RoleService
@inject IUserService UserService
-@if (roles != null)
+@if (permissions != null)
{
@@ -52,7 +52,7 @@
{
var p = permission;
-
+
|
}
@@ -85,7 +85,7 @@
string permissionnames = "";
List roles;
- List permissions = new List();
+ List permissions;
List users = new List();
string username = "";
string message = "";
@@ -103,12 +103,13 @@
roles = await RoleService.GetRolesAsync(ModuleState.SiteId);
roles.Insert(0, new Role { Name = Constants.AllUsersRole });
- foreach (string permissionname in permissionnames.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
- {
- permissions.Add(new PermissionString { PermissionName = permissionname, Permissions = "" });
- }
- if (Permissions != "")
+ if (!string.IsNullOrEmpty(Permissions))
{
+ permissions = new List();
+ foreach (string permissionname in permissionnames.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
+ {
+ permissions.Add(new PermissionString { PermissionName = permissionname, Permissions = "" });
+ }
foreach (PermissionString permissionstring in UserSecurity.GetPermissionStrings(Permissions))
{
if (permissions.Find(item => item.PermissionName == permissionstring.PermissionName) != null)
@@ -212,6 +213,21 @@
public string GetPermissions()
{
+ ValidatePermissions();
return UserSecurity.SetPermissionStrings(permissions);
}
+
+ private void ValidatePermissions()
+ {
+ PermissionString permission;
+ for (int i = 0; i < permissions.Count; i++)
+ {
+ permission = permissions[i];
+ List 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;
+ }
+ }
}
diff --git a/Oqtane.Client/Modules/Controls/TriStateCheckBox.razor b/Oqtane.Client/Modules/Controls/TriStateCheckBox.razor
index c8881f3f..f1ed8776 100644
--- a/Oqtane.Client/Modules/Controls/TriStateCheckBox.razor
+++ b/Oqtane.Client/Modules/Controls/TriStateCheckBox.razor
@@ -1,6 +1,6 @@
@namespace Oqtane.Modules.Controls
-
+
@code {
[Parameter]
@@ -24,20 +24,23 @@
private void SetValue()
{
- switch (value)
+ if (!Disabled)
{
- case true:
- value = false;
- break;
- case false:
- value = null;
- break;
- case null:
- value = true;
- break;
+ switch (value)
+ {
+ case true:
+ value = false;
+ break;
+ case false:
+ value = null;
+ break;
+ case null:
+ value = true;
+ break;
+ }
+ SetImage();
+ OnChange(value);
}
- SetImage();
- OnChange(value);
}
private void SetImage()
diff --git a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs
index b7dd8f03..c13b86d2 100644
--- a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs
+++ b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs
@@ -85,6 +85,10 @@ namespace Oqtane.Repository
{
_permissions.UpdatePermissions(SiteId, "ModuleDefinition", moduledef.ModuleDefinitionId, moduledefinition.Permissions);
}
+ else
+ {
+ moduledefinition.Permissions = _permissions.EncodePermissions(moduledef.ModuleDefinitionId, permissions);
+ }
// remove module definition from list
moduledefs.Remove(moduledef);
}