@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
@if (panetitle != "") { @((MarkupString)panetitle) } @DynamicComponent
@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 = "
" + Name + " Pane
"; } 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(); } } } }; }; } }