diff --git a/Oqtane.Client/Services/Interfaces/ISettingService.cs b/Oqtane.Client/Services/Interfaces/ISettingService.cs
index 2358f2aa..e9bb5126 100644
--- a/Oqtane.Client/Services/Interfaces/ISettingService.cs
+++ b/Oqtane.Client/Services/Interfaces/ISettingService.cs
@@ -70,7 +70,7 @@ namespace Oqtane.Services
///
/// Returns a key-value dictionary of all module settings for the given module
///
- ///
+ ///
///
Task> GetModuleSettingsAsync(int moduleId);
@@ -82,6 +82,21 @@ namespace Oqtane.Services
///
Task UpdateModuleSettingsAsync(Dictionary moduleSettings, int moduleId);
+ ///
+ /// Returns a key-value dictionary of all module settings for the given module
+ ///
+ ///
+ ///
+ Task> GetModuleDefinitionSettingsAsync(int moduleDefinitionId);
+
+ ///
+ /// Updates a module setting
+ ///
+ ///
+ ///
+ ///
+ Task UpdateModuleDefinitionSettingsAsync(Dictionary moduleDefinitionSettings, int moduleDefinitionId);
+
///
/// Returns a key-value dictionary of all user settings for the given user
///
diff --git a/Oqtane.Client/Services/SettingService.cs b/Oqtane.Client/Services/SettingService.cs
index 66e361fa..fb7c7704 100644
--- a/Oqtane.Client/Services/SettingService.cs
+++ b/Oqtane.Client/Services/SettingService.cs
@@ -71,6 +71,16 @@ namespace Oqtane.Services
await UpdateSettingsAsync(moduleSettings, EntityNames.Module, moduleId);
}
+ public async Task> GetModuleDefinitionSettingsAsync(int moduleDefinitionId)
+ {
+ return await GetSettingsAsync(EntityNames.ModuleDefinition, moduleDefinitionId);
+ }
+
+ public async Task UpdateModuleDefinitionSettingsAsync(Dictionary moduleDefinitionSettings, int moduleDefinitionId)
+ {
+ await UpdateSettingsAsync(moduleDefinitionSettings, EntityNames.ModuleDefinition, moduleDefinitionId);
+ }
+
public async Task> GetUserSettingsAsync(int userId)
{
return await GetSettingsAsync(EntityNames.User, userId);
diff --git a/Oqtane.Server/Controllers/SettingController.cs b/Oqtane.Server/Controllers/SettingController.cs
index b305686e..99596c53 100644
--- a/Oqtane.Server/Controllers/SettingController.cs
+++ b/Oqtane.Server/Controllers/SettingController.cs
@@ -154,6 +154,9 @@ namespace Oqtane.Controllers
break;
case EntityNames.Page:
case EntityNames.Module:
+ case EntityNames.ModuleDefinition:
+ authorized = User.IsInRole(RoleNames.Host);
+ break;
case EntityNames.Folder:
authorized = _userPermissions.IsAuthorized(User, entityName, entityId, permissionName);
break;
diff --git a/Oqtane.Server/Repository/Context/TenantDBContext.cs b/Oqtane.Server/Repository/Context/TenantDBContext.cs
index ca8c822d..033d9df1 100644
--- a/Oqtane.Server/Repository/Context/TenantDBContext.cs
+++ b/Oqtane.Server/Repository/Context/TenantDBContext.cs
@@ -18,6 +18,7 @@ namespace Oqtane.Repository
public virtual DbSet Page { get; set; }
public virtual DbSet PageModule { get; set; }
public virtual DbSet Module { get; set; }
+ public virtual DbSet ModuleDefinition { get; set; }
public virtual DbSet User { get; set; }
public virtual DbSet Profile { get; set; }
public virtual DbSet Role { get; set; }