moduledefinition settings and host settings

This commit is contained in:
Shaun Walker
2021-12-09 15:50:00 -05:00
parent d1ade8789b
commit 2f34bf69e3
8 changed files with 132 additions and 38 deletions

View File

@ -52,11 +52,11 @@ namespace Oqtane.Controllers
return settings;
}
// GET api/<controller>/5
[HttpGet("{id}")]
public Setting Get(int id)
// GET api/<controller>/5/xxx
[HttpGet("{id}/{entityName}")]
public Setting Get(int id, string entityName)
{
Setting setting = _settings.GetSetting(id);
Setting setting = _settings.GetSetting(entityName, id);
if (IsAuthorized(setting.EntityName, setting.EntityId, PermissionNames.View))
{
if (setting.EntityName == EntityNames.Site && !User.IsInRole(RoleNames.Admin) && !setting.IsPublic)
@ -111,14 +111,14 @@ namespace Oqtane.Controllers
return setting;
}
// DELETE api/<controller>/5
[HttpDelete("{id}")]
public void Delete(int id)
// DELETE api/<controller>/5/xxx
[HttpDelete("{id}/{entityName}")]
public void Delete(string entityName, int id)
{
Setting setting = _settings.GetSetting(id);
Setting setting = _settings.GetSetting(entityName, id);
if (IsAuthorized(setting.EntityName, setting.EntityId, PermissionNames.Edit))
{
_settings.DeleteSetting(id);
_settings.DeleteSetting(setting.EntityName, id);
AddSyncEvent(setting.EntityName);
_logger.Log(LogLevel.Information, this, LogFunction.Delete, "Setting Deleted {Setting}", setting);
}
@ -140,6 +140,8 @@ namespace Oqtane.Controllers
switch (entityName)
{
case EntityNames.Tenant:
case EntityNames.ModuleDefinition:
case EntityNames.Host:
authorized = User.IsInRole(RoleNames.Host);
break;
case EntityNames.Site:
@ -154,9 +156,6 @@ 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;

View File

@ -70,6 +70,7 @@ namespace Oqtane.Repository
public virtual DbSet<ModuleDefinition> ModuleDefinition { get; set; }
public virtual DbSet<Job> Job { get; set; }
public virtual DbSet<JobLog> JobLog { get; set; }
public virtual DbSet<Setting> Setting { get; set; }
public override int SaveChanges()
{

View File

@ -18,7 +18,6 @@ namespace Oqtane.Repository
public virtual DbSet<Page> Page { get; set; }
public virtual DbSet<PageModule> PageModule { get; set; }
public virtual DbSet<Module> Module { get; set; }
public virtual DbSet<ModuleDefinition> ModuleDefinition { get; set; }
public virtual DbSet<User> User { get; set; }
public virtual DbSet<Profile> Profile { get; set; }
public virtual DbSet<Role> Role { get; set; }

View File

@ -9,7 +9,7 @@ namespace Oqtane.Repository
IEnumerable<Setting> GetSettings(string entityName, int entityId);
Setting AddSetting(Setting setting);
Setting UpdateSetting(Setting setting);
Setting GetSetting(int settingId);
void DeleteSetting(int settingId);
Setting GetSetting(string entityName, int settingId);
void DeleteSetting(string entityName, int settingId);
}
}

View File

@ -2,53 +2,100 @@ using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Oqtane.Models;
using Oqtane.Shared;
namespace Oqtane.Repository
{
public class SettingRepository : ISettingRepository
{
private TenantDBContext _db;
private TenantDBContext _tenant;
private MasterDBContext _master;
public SettingRepository(TenantDBContext context)
public SettingRepository(TenantDBContext tenant, MasterDBContext master)
{
_db = context;
_tenant = tenant;
_master = master;
}
public IEnumerable<Setting> GetSettings(string entityName)
{
return _db.Setting.Where(item => item.EntityName == entityName);
if (IsMaster(entityName))
{
return _master.Setting.Where(item => item.EntityName == entityName);
}
else
{
return _tenant.Setting.Where(item => item.EntityName == entityName);
}
}
public IEnumerable<Setting> GetSettings(string entityName, int entityId)
{
return _db.Setting.Where(item => item.EntityName == entityName)
.Where(item => item.EntityId == entityId);
var settings = GetSettings(entityName);
return settings.Where(item => item.EntityId == entityId);
}
public Setting AddSetting(Setting setting)
{
_db.Setting.Add(setting);
_db.SaveChanges();
if (IsMaster(setting.EntityName))
{
_master.Setting.Add(setting);
_master.SaveChanges();
}
else
{
_tenant.Setting.Add(setting);
_tenant.SaveChanges();
}
return setting;
}
public Setting UpdateSetting(Setting setting)
{
_db.Entry(setting).State = EntityState.Modified;
_db.SaveChanges();
if (IsMaster(setting.EntityName))
{
_master.Entry(setting).State = EntityState.Modified;
_master.SaveChanges();
}
else
{
_tenant.Entry(setting).State = EntityState.Modified;
_tenant.SaveChanges();
}
return setting;
}
public Setting GetSetting(int settingId)
public Setting GetSetting(string entityName, int settingId)
{
return _db.Setting.Find(settingId);
if (IsMaster(entityName))
{
return _master.Setting.Find(settingId);
}
else
{
return _tenant.Setting.Find(settingId);
}
}
public void DeleteSetting(int settingId)
public void DeleteSetting(string entityName, int settingId)
{
Setting setting = _db.Setting.Find(settingId);
_db.Setting.Remove(setting);
_db.SaveChanges();
if (IsMaster(entityName))
{
Setting setting = _master.Setting.Find(settingId);
_master.Setting.Remove(setting);
_master.SaveChanges();
}
else
{
Setting setting = _tenant.Setting.Find(settingId);
_tenant.Setting.Remove(setting);
_tenant.SaveChanges();
}
}
private bool IsMaster(string EntityName)
{
return (EntityName == EntityNames.ModuleDefinition || EntityName == EntityNames.Host);
}
}
}