141 lines
5.8 KiB
Plaintext
141 lines
5.8 KiB
Plaintext
@using System
|
|
@using Oqtane.Services
|
|
@using Oqtane.Modules
|
|
@using Oqtane.Models
|
|
@using Oqtane.Shared
|
|
@using Oqtane.Security
|
|
@using System.Linq
|
|
@namespace Oqtane.Shared
|
|
@inject IUserService UserService
|
|
@inject IModuleService ModuleService
|
|
@inject IModuleDefinitionService ModuleDefinitionService
|
|
|
|
<div class="@paneadminborder">
|
|
@if (panetitle != "")
|
|
{
|
|
@((MarkupString)panetitle)
|
|
}
|
|
@DynamicComponent
|
|
</div>
|
|
|
|
@code {
|
|
[CascadingParameter]
|
|
protected PageState PageState { get; set; }
|
|
|
|
[Parameter]
|
|
public string Name { get; set; }
|
|
|
|
RenderFragment DynamicComponent { get; set; }
|
|
|
|
string paneadminborder = "";
|
|
string panetitle = "";
|
|
|
|
protected override void OnParametersSet()
|
|
{
|
|
if (PageState.DesignMode && UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions) && Name != Constants.AdminPane)
|
|
{
|
|
paneadminborder = "pane-admin-border";
|
|
panetitle = "<div class=\"pane-admin-title\">" + Name + " Pane</div>";
|
|
}
|
|
else
|
|
{
|
|
paneadminborder = "";
|
|
panetitle = "";
|
|
}
|
|
|
|
DynamicComponent = builder =>
|
|
{
|
|
if (PageState.ModuleId != -1 && PageState.Control != "")
|
|
{
|
|
if (Name == Constants.AdminPane)
|
|
{
|
|
Module module = PageState.Modules.Where(item => item.ModuleId == PageState.ModuleId).FirstOrDefault();
|
|
if (module != null)
|
|
{
|
|
string typename = module.ModuleType;
|
|
if (PageState.Control == "Settings")
|
|
{
|
|
typename = Constants.DefaultSettingsControl;
|
|
}
|
|
Type moduleType = Type.GetType(typename);
|
|
if (moduleType != null)
|
|
{
|
|
bool authorized = false;
|
|
if (PageState.Control == "Settings")
|
|
{
|
|
authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", PageState.Page.Permissions);
|
|
}
|
|
else
|
|
{
|
|
// verify security access level for this module control
|
|
switch (module.SecurityAccessLevel)
|
|
{
|
|
case SecurityAccessLevel.Anonymous:
|
|
authorized = true;
|
|
break;
|
|
case SecurityAccessLevel.View:
|
|
authorized = UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions);
|
|
break;
|
|
case SecurityAccessLevel.Edit:
|
|
authorized = UserSecurity.IsAuthorized(PageState.User, "Edit", module.Permissions);
|
|
break;
|
|
case SecurityAccessLevel.Admin:
|
|
authorized = UserSecurity.IsAuthorized(PageState.User, Constants.AdminRole);
|
|
break;
|
|
case SecurityAccessLevel.Host:
|
|
authorized = UserSecurity.IsAuthorized(PageState.User, Constants.HostRole);
|
|
break;
|
|
}
|
|
}
|
|
if (authorized)
|
|
{
|
|
if (PageState.Control != "Settings" && module.ControlTitle != "")
|
|
{
|
|
module.Title = module.ControlTitle;
|
|
}
|
|
builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer));
|
|
builder.AddAttribute(1, "Module", module);
|
|
builder.CloseComponent();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// module control does not exist with name specified
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if (PageState.ModuleId != -1)
|
|
{
|
|
Module module = PageState.Modules.Where(item => item.ModuleId == PageState.ModuleId).FirstOrDefault();
|
|
if (module != null && module.Pane == Name)
|
|
{
|
|
// check if user is authorized to view module
|
|
if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions))
|
|
{
|
|
builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer));
|
|
builder.AddAttribute(1, "Module", module);
|
|
builder.CloseComponent();
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
foreach (Module module in PageState.Modules.Where(item => item.Pane == Name).OrderBy(x => x.Order).ToArray())
|
|
{
|
|
// check if user is authorized to view module
|
|
if (UserSecurity.IsAuthorized(PageState.User, "View", module.Permissions))
|
|
{
|
|
builder.OpenComponent(0, Type.GetType(Constants.DefaultContainer));
|
|
builder.AddAttribute(1, "Module", module);
|
|
builder.SetKey(module.PageModuleId);
|
|
builder.CloseComponent();
|
|
}
|
|
}
|
|
}
|
|
};
|
|
};
|
|
}
|
|
} |