From 0f109ab93ae405ce37d4eaf1a9f9bc1e6fdcb2f7 Mon Sep 17 00:00:00 2001 From: Shaun Walker Date: Wed, 8 Mar 2023 10:51:38 -0500 Subject: [PATCH] fx #2647 - error when creating new site in existing installation --- .../Repository/ModuleDefinitionRepository.cs | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs index da8c9660..0ef46718 100644 --- a/Oqtane.Server/Repository/ModuleDefinitionRepository.cs +++ b/Oqtane.Server/Repository/ModuleDefinitionRepository.cs @@ -4,11 +4,14 @@ using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; +using System.Security.Policy; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Caching.Memory; using Oqtane.Extensions; using Oqtane.Models; using Oqtane.Modules; +using Oqtane.Modules.Admin.Roles; +using Oqtane.Modules.Admin.Users; using Oqtane.Shared; namespace Oqtane.Repository @@ -81,16 +84,20 @@ namespace Oqtane.Repository moduledefinition.SiteId = siteId; if (permissions.Count == 0) { + // no module definition permissions exist for this site + moduledefinition.PermissionList = ClonePermissions(moduledefinition.PermissionList); _permissions.UpdatePermissions(siteId, EntityNames.ModuleDefinition, moduledefinition.ModuleDefinitionId, moduledefinition.PermissionList); } else { - if (permissions.Where(item => item.EntityId == moduledefinition.ModuleDefinitionId).Any()) + if (permissions.Any(item => item.EntityId == moduledefinition.ModuleDefinitionId)) { moduledefinition.PermissionList = permissions.Where(item => item.EntityId == moduledefinition.ModuleDefinitionId).ToList(); } else { + // permissions for module definition do not exist for this site + moduledefinition.PermissionList = ClonePermissions(moduledefinition.PermissionList); _permissions.UpdatePermissions(siteId, EntityNames.ModuleDefinition, moduledefinition.ModuleDefinitionId, moduledefinition.PermissionList); } } @@ -275,5 +282,23 @@ namespace Oqtane.Repository return moduledefinitions; } + + private List ClonePermissions(List permissionList) + { + var permissions = new List(); + foreach (var p in permissionList) + { + var permission = new Permission(); + permission.SiteId = p.SiteId; + permission.EntityName = p.EntityName; + permission.EntityId = p.EntityId; + permission.PermissionName = p.PermissionName; + permission.RoleId = p.RoleId; + permission.UserId = p.UserId; + permission.IsAuthorized = p.IsAuthorized; + permissions.Add(permission); + } + return permissions; + } } }