From f46b9a2fb22c7fb84c4b4ff58e5929e731c0b134 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Wed, 11 Mar 2020 16:45:11 -0400 Subject: [PATCH] fixes to permission grid --- .../Modules/Controls/PermissionGrid.razor | 32 ++++++++++++++----- .../Modules/Controls/TriStateCheckBox.razor | 29 +++++++++-------- .../Repository/ModuleDefinitionRepository.cs | 4 +++ 3 files changed, 44 insertions(+), 21 deletions(-) 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); }
- +