fixes to emable module package installation from wwwroot/modules
This commit is contained in:
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using Microsoft.Extensions.Caching.Memory;
|
||||
using Oqtane.Extensions;
|
||||
using Oqtane.Models;
|
||||
using Oqtane.Modules;
|
||||
using Oqtane.Shared;
|
||||
@ -36,7 +37,7 @@ namespace Oqtane.Repository
|
||||
public void UpdateModuleDefinition(ModuleDefinition moduleDefinition)
|
||||
{
|
||||
_permissions.UpdatePermissions(moduleDefinition.SiteId, EntityNames.ModuleDefinition, moduleDefinition.ModuleDefinitionId, moduleDefinition.Permissions);
|
||||
_cache.Remove("moduledefinitions");
|
||||
_cache.Remove("moduledefinitions:" + moduleDefinition.SiteId.ToString());
|
||||
}
|
||||
|
||||
public void DeleteModuleDefinition(int moduleDefinitionId, int siteId)
|
||||
@ -45,27 +46,35 @@ namespace Oqtane.Repository
|
||||
_permissions.DeletePermissions(siteId, EntityNames.ModuleDefinition, moduleDefinitionId);
|
||||
_db.ModuleDefinition.Remove(moduleDefinition);
|
||||
_db.SaveChanges();
|
||||
_cache.Remove("moduledefinitions");
|
||||
}
|
||||
|
||||
public List<ModuleDefinition> LoadModuleDefinitions(int siteId)
|
||||
{
|
||||
List<ModuleDefinition> moduleDefinitions;
|
||||
// get module definitions for site
|
||||
List<ModuleDefinition> moduleDefinitions = _cache.GetOrCreate("moduledefinitions:" + siteId.ToString(), entry =>
|
||||
{
|
||||
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
|
||||
return LoadSiteModuleDefinitions(siteId);
|
||||
});
|
||||
return moduleDefinitions;
|
||||
}
|
||||
|
||||
// get run-time module definitions
|
||||
moduleDefinitions = _cache.GetOrCreate("moduledefinitions", entry =>
|
||||
private List<ModuleDefinition> LoadSiteModuleDefinitions(int siteId)
|
||||
{
|
||||
// get module assemblies
|
||||
List<ModuleDefinition> moduleDefinitions = _cache.GetOrCreate("moduledefinitions", entry =>
|
||||
{
|
||||
entry.SlidingExpiration = TimeSpan.FromMinutes(30);
|
||||
return LoadModuleDefinitionsFromAssemblies();
|
||||
});
|
||||
|
||||
// get module defintion permissions for site
|
||||
// get module definition permissions for site
|
||||
List<Permission> permissions = _permissions.GetPermissions(siteId, EntityNames.ModuleDefinition).ToList();
|
||||
|
||||
// get module definitions in database
|
||||
List<ModuleDefinition> moduledefs = _db.ModuleDefinition.ToList();
|
||||
|
||||
// sync run-time module definitions with database
|
||||
// sync module assemblies with database
|
||||
foreach (ModuleDefinition moduledefinition in moduleDefinitions)
|
||||
{
|
||||
ModuleDefinition moduledef = moduledefs.Where(item => item.ModuleDefinitionName == moduledefinition.ModuleDefinitionName).FirstOrDefault();
|
||||
@ -88,8 +97,8 @@ namespace Oqtane.Repository
|
||||
{
|
||||
moduledefinition.Permissions = _permissions.EncodePermissions(permissions.Where(item => item.EntityId == moduledef.ModuleDefinitionId));
|
||||
}
|
||||
// remove module definition from list
|
||||
moduledefs.Remove(moduledef);
|
||||
// remove module definition from list as it is already synced
|
||||
moduledefs.Remove(moduledef);
|
||||
}
|
||||
moduledefinition.ModuleDefinitionId = moduledef.ModuleDefinitionId;
|
||||
moduledefinition.SiteId = siteId;
|
||||
@ -104,6 +113,7 @@ namespace Oqtane.Repository
|
||||
{
|
||||
_permissions.DeletePermissions(siteId, EntityNames.ModuleDefinition, moduledefinition.ModuleDefinitionId);
|
||||
_db.ModuleDefinition.Remove(moduledefinition); // delete
|
||||
_db.SaveChanges();
|
||||
}
|
||||
|
||||
return moduleDefinitions;
|
||||
@ -166,11 +176,18 @@ namespace Oqtane.Repository
|
||||
moduledefinition.AssemblyName = assembly.FullName.Split(",")[0];
|
||||
if (moduledefinition.Categories == "Admin")
|
||||
{
|
||||
moduledefinition.Permissions = "[{\"PermissionName\":\"Utilize\",\"Permissions\":\"" + Constants.AdminRole + "\"}]";
|
||||
moduledefinition.Permissions = new List<Permission>
|
||||
{
|
||||
new Permission(PermissionNames.Utilize, Constants.AdminRole, true)
|
||||
}.EncodePermissions();
|
||||
}
|
||||
else
|
||||
{
|
||||
moduledefinition.Permissions = "[{\"PermissionName\":\"Utilize\",\"Permissions\":\"" + Constants.AdminRole + ";" + Constants.RegisteredRole + "\"}]";
|
||||
moduledefinition.Permissions = new List<Permission>
|
||||
{
|
||||
new Permission(PermissionNames.Utilize, Constants.AdminRole, true),
|
||||
new Permission(PermissionNames.Utilize, Constants.RegisteredRole, true)
|
||||
}.EncodePermissions();
|
||||
}
|
||||
moduledefinitions.Add(moduledefinition);
|
||||
index = moduledefinitions.FindIndex(item => item.ModuleDefinitionName == qualifiedModuleType);
|
||||
|
Reference in New Issue
Block a user