fx #2647 - error when creating new site in existing installation

This commit is contained in:
Shaun Walker 2023-03-08 10:51:38 -05:00
parent 63df2742db
commit 0f109ab93a

View File

@ -4,11 +4,14 @@ using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection; using System.Reflection;
using System.Security.Policy;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Caching.Memory;
using Oqtane.Extensions; using Oqtane.Extensions;
using Oqtane.Models; using Oqtane.Models;
using Oqtane.Modules; using Oqtane.Modules;
using Oqtane.Modules.Admin.Roles;
using Oqtane.Modules.Admin.Users;
using Oqtane.Shared; using Oqtane.Shared;
namespace Oqtane.Repository namespace Oqtane.Repository
@ -81,16 +84,20 @@ namespace Oqtane.Repository
moduledefinition.SiteId = siteId; moduledefinition.SiteId = siteId;
if (permissions.Count == 0) 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); _permissions.UpdatePermissions(siteId, EntityNames.ModuleDefinition, moduledefinition.ModuleDefinitionId, moduledefinition.PermissionList);
} }
else 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(); moduledefinition.PermissionList = permissions.Where(item => item.EntityId == moduledefinition.ModuleDefinitionId).ToList();
} }
else 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); _permissions.UpdatePermissions(siteId, EntityNames.ModuleDefinition, moduledefinition.ModuleDefinitionId, moduledefinition.PermissionList);
} }
} }
@ -275,5 +282,23 @@ namespace Oqtane.Repository
return moduledefinitions; return moduledefinitions;
} }
private List<Permission> ClonePermissions(List<Permission> permissionList)
{
var permissions = new List<Permission>();
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;
}
} }
} }