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; }