added a Setting Management UI
This commit is contained in:
@ -248,6 +248,22 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
}
|
||||
|
||||
// GET: api/<controller>/entitynames
|
||||
[HttpGet("entitynames")]
|
||||
[Authorize(Roles = RoleNames.Host)]
|
||||
public IEnumerable<string> GetEntityNames()
|
||||
{
|
||||
return _settings.GetEntityNames();
|
||||
}
|
||||
|
||||
// GET: api/<controller>/entityids?entityname=x
|
||||
[HttpGet("entityids")]
|
||||
[Authorize(Roles = RoleNames.Host)]
|
||||
public IEnumerable<int> GetEntityIds(string entityName)
|
||||
{
|
||||
return _settings.GetEntityIds(entityName);
|
||||
}
|
||||
|
||||
// DELETE api/<controller>/clear
|
||||
[HttpDelete("clear")]
|
||||
[Authorize(Roles = RoleNames.Admin)]
|
||||
@ -297,6 +313,7 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
break;
|
||||
case EntityNames.Site:
|
||||
case EntityNames.Role:
|
||||
if (permissionName == PermissionNames.Edit)
|
||||
{
|
||||
authorized = User.IsInRole(RoleNames.Admin);
|
||||
@ -326,8 +343,14 @@ namespace Oqtane.Controllers
|
||||
authorized = true;
|
||||
if (permissionName == PermissionNames.Edit)
|
||||
{
|
||||
authorized = _userPermissions.IsAuthorized(User, _alias.SiteId, entityName, entityId, permissionName) ||
|
||||
_userPermissions.IsAuthorized(User, _alias.SiteId, entityName, -1, PermissionNames.Write, RoleNames.Admin);
|
||||
if (entityId == -1)
|
||||
{
|
||||
authorized = User.IsInRole(entityName.ToLower().StartsWith("master:") ? RoleNames.Host : RoleNames.Admin);
|
||||
}
|
||||
else
|
||||
{
|
||||
authorized = _userPermissions.IsAuthorized(User, _alias.SiteId, entityName, entityId, permissionName);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -347,6 +370,7 @@ namespace Oqtane.Controllers
|
||||
filter = !User.IsInRole(RoleNames.Host);
|
||||
break;
|
||||
case EntityNames.Site:
|
||||
case EntityNames.Role:
|
||||
filter = !User.IsInRole(RoleNames.Admin);
|
||||
break;
|
||||
case EntityNames.Page:
|
||||
@ -365,7 +389,7 @@ namespace Oqtane.Controllers
|
||||
}
|
||||
break;
|
||||
default: // custom entity
|
||||
filter = !User.IsInRole(RoleNames.Admin) && !_userPermissions.IsAuthorized(User, _alias.SiteId, entityName, entityId, PermissionNames.Edit);
|
||||
filter = !User.IsInRole(entityName.ToLower().StartsWith("master:") ? RoleNames.Host : RoleNames.Admin) && !_userPermissions.IsAuthorized(User, _alias.SiteId, entityName, entityId, PermissionNames.Edit);
|
||||
break;
|
||||
}
|
||||
return filter;
|
||||
|
@ -19,6 +19,8 @@ namespace Oqtane.Repository
|
||||
Setting GetSetting(string entityName, int entityId, string settingName);
|
||||
void DeleteSetting(string entityName, int settingId);
|
||||
void DeleteSettings(string entityName, int entityId);
|
||||
IEnumerable<string> GetEntityNames();
|
||||
IEnumerable<int> GetEntityIds(string entityName);
|
||||
string GetSettingValue(IEnumerable<Setting> settings, string settingName, string defaultValue);
|
||||
string GetSettingValue(string entityName, int entityId, string settingName, string defaultValue);
|
||||
}
|
||||
@ -190,6 +192,18 @@ namespace Oqtane.Repository
|
||||
ManageCache(entityName);
|
||||
}
|
||||
|
||||
public IEnumerable<string> GetEntityNames()
|
||||
{
|
||||
using var db = _tenantContextFactory.CreateDbContext();
|
||||
return db.Setting.Select(item => item.EntityName).Distinct().OrderBy(item => item).ToList();
|
||||
}
|
||||
public IEnumerable<int> GetEntityIds(string entityName)
|
||||
{
|
||||
using var db = _tenantContextFactory.CreateDbContext();
|
||||
return db.Setting.Where(item => item.EntityName == entityName)
|
||||
.Select(item => item.EntityId).Distinct().OrderBy(item => item).ToList();
|
||||
}
|
||||
|
||||
public string GetSettingValue(IEnumerable<Setting> settings, string settingName, string defaultValue)
|
||||
{
|
||||
var setting = settings.FirstOrDefault(item => item.SettingName == settingName);
|
||||
@ -218,7 +232,9 @@ namespace Oqtane.Repository
|
||||
|
||||
private bool IsMaster(string EntityName)
|
||||
{
|
||||
return (EntityName == EntityNames.ModuleDefinition || EntityName == EntityNames.Host);
|
||||
return EntityName == EntityNames.Host || EntityName == EntityNames.Job ||
|
||||
EntityName == EntityNames.ModuleDefinition || EntityName == EntityNames.Theme ||
|
||||
EntityName.ToLower().StartsWith("master:");
|
||||
}
|
||||
|
||||
private void ManageCache(string EntityName)
|
||||
|
Reference in New Issue
Block a user