From a981dd0e978622ac12c1747071e0ec2786c83082 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Mon, 21 Jul 2025 16:34:34 -0400 Subject: [PATCH] fix Control Panel to initialize extended module permissions when module is added or copied --- .../Theme/ControlPanelInteractive.razor | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanelInteractive.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanelInteractive.razor index 5dd940f8..a42a1f12 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanelInteractive.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanelInteractive.razor @@ -353,7 +353,7 @@ module.PageId = PageState.Page.PageId; module.ModuleDefinitionName = _moduleDefinitionName; module.AllPages = false; - module.PermissionList = GenerateDefaultPermissions(module.SiteId); + module.PermissionList = GenerateDefaultPermissions(module.SiteId, module.ModuleDefinitionName); module = await ModuleService.AddModuleAsync(module); newModuleId = module.ModuleId; @@ -365,7 +365,7 @@ module.SiteId = PageState.Page.SiteId; module.PageId = PageState.Page.PageId; module.AllPages = false; - module.PermissionList = GenerateDefaultPermissions(module.SiteId); + module.PermissionList = GenerateDefaultPermissions(module.SiteId, module.ModuleDefinitionName); module = await ModuleService.AddModuleAsync(module); var moduleContent = await ModuleService.ExportModuleAsync(int.Parse(_moduleId), PageState.Page.PageId); @@ -430,7 +430,7 @@ } } - private List GenerateDefaultPermissions(int siteId) + private List GenerateDefaultPermissions(int siteId, string moduleDefinitionName) { var permissions = new List(); if (_visibility == "view") @@ -443,8 +443,22 @@ // set module view permissions to page edit permissions permissions = SetPermissions(permissions, siteId, PermissionNames.View, PermissionNames.Edit); } - // set module edit permissions to page edit permissions - permissions = SetPermissions(permissions, siteId, PermissionNames.Edit, PermissionNames.Edit); + + // get module permissions + var permissionNames = $"{PermissionNames.View},{PermissionNames.Edit}"; + var moduleDefinition = _allModuleDefinitions.FirstOrDefault(item => item.ModuleDefinitionName == moduleDefinitionName); + if (moduleDefinition != null && !string.IsNullOrEmpty(moduleDefinition.PermissionNames)) + { + permissionNames = moduleDefinition.PermissionNames; + } + foreach (var permission in permissionNames.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries)) + { + if (permission != PermissionNames.View) + { + // set remaining module permissions to page edit permissions + permissions = SetPermissions(permissions, siteId, permission, PermissionNames.Edit); + } + } return permissions; }