diff --git a/Oqtane.Client/Modules/Admin/Pages/Add.razor b/Oqtane.Client/Modules/Admin/Pages/Add.razor index b8a072eb..6d82ca6d 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Add.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Add.razor @@ -6,102 +6,109 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer - -
- - - @if (PageState.Site.Themes != null) - { -
-
- -
- -
-
-
- -
- -
-
-
- -
- - @if (_children != null && _children.Count > 0 && (_insert == "<" || _insert == ">")) - { - - } -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
+@if (_initialized) +{ + + + + @if (PageState.Site.Themes != null) + {
- +
- + +
+
+ @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) + { +
+ +
+ +
+
+
+ +
+ + @if (_children != null && _children.Count > 0 && (_insert == "<" || _insert == ">")) + { + + } +
+
+ } + else + { +
+ +
+ +
+
+
+ +
+ +
+
+ } +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+
@@ -111,112 +118,155 @@
- +
- -
-
-
- -
- + +
-
-
-
-
- -
- + +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
-
- -
- +
+
+
+
+ +
+ +
+
+
+ +
+ +
-
-
- } -
- -
-
- -
-
-
- @if (_themeSettingsType != null) - { - - @ThemeSettingsComponent + + } - } -
-
- - -
+ +
+
+ +
+
+
+ @if (_themeSettingsType != null) + { + + @ThemeSettingsComponent + + } + +
+ + + +} @code { - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.View; - private List _themes = new List(); - private List _containers = new List(); - private string _name; - private string _parentid = "-1"; - private string _insert = ">>"; - private List _children; - private int _childid = -1; - private string _isnavigation = "True"; - private string _isclickable = "True"; + private bool _initialized = false; + private ElementReference form; + private bool validated = false; + private List _themes = new List(); + private List _containers = new List(); + private int _pageId; + private string _name; + private string _parentid = "-1"; + private string _insert = ">>"; + private List _children; + private int _childid = -1; + private string _isnavigation = "True"; + private string _isclickable = "True"; private string _path = string.Empty; private string _url; - private string _ispersonalizable = "False"; + private string _ispersonalizable = "False"; private string _title; private string _icon = string.Empty; private string _themetype = string.Empty; - private string _containertype = string.Empty; + private string _containertype = string.Empty; private string _headcontent; private string _bodycontent; - private string _permissions = null; - private PermissionGrid _permissionGrid; - private Type _themeSettingsType; - private object _themeSettings; - private RenderFragment ThemeSettingsComponent { get; set; } - private bool _refresh = false; - private ElementReference form; - private bool validated = false; + private string _permissions = null; + private PermissionGrid _permissionGrid; + private Type _themeSettingsType; + private object _themeSettings; + private RenderFragment ThemeSettingsComponent { get; set; } + private bool _refresh = false; + protected Page _parent = null; - protected override async Task OnInitializedAsync() - { - try - { - _themes = ThemeService.GetThemeControls(PageState.Site.Themes); - _themetype = PageState.Site.DefaultThemeType; - _containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype); - _containertype = PageState.Site.DefaultContainerType; - _children = PageState.Pages.Where(item => item.ParentId == null).ToList(); - ThemeSettings(); - } + protected override async Task OnInitializedAsync() + { + try + { + if (PageState.QueryString.ContainsKey("id")) + { + _pageId = Int32.Parse(PageState.QueryString["id"]); + _parent = await PageService.GetPageAsync(_pageId); + if (_parent != null) + { + _parentid = _parent.PageId.ToString(); + } + } + + // if admin or user has edit access to parent page + if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin) || (_parent != null && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, _parent.PermissionList))) + { + _themes = ThemeService.GetThemeControls(PageState.Site.Themes); + _themetype = PageState.Site.DefaultThemeType; + _containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype); + _containertype = PageState.Site.DefaultContainerType; + _children = PageState.Pages.Where(item => item.ParentId == null).ToList(); + ThemeSettings(); + _initialized = true; + } + else + { + await logger.LogWarning("Error Loading Page {ParentId}", _parentid); + AddModuleMessage(Localizer["Error.Page.Load"], MessageType.Error); + } + } catch (Exception ex) { - await logger.LogError(ex, "Error Initializing Page {Error}", ex.Message); - AddModuleMessage(Localizer["Error.Page.Initialize"], MessageType.Error); + await logger.LogError(ex, "Error Loading Page {Error}", ex.Message); + AddModuleMessage(Localizer["Error.Page.Load"], MessageType.Error); } } diff --git a/Oqtane.Client/Modules/Admin/Pages/Edit.razor b/Oqtane.Client/Modules/Admin/Pages/Edit.razor index e047b020..11a065c8 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Edit.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Edit.razor @@ -8,113 +8,242 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer -
- - - @if (PageState.Site.Themes != null) - { -
-
- -
- -
-
-
- -
- -
-
-
- -
- - @if (_children != null && _children.Count > 0 && (_insert == "<" || _insert == ">")) +@if (_initialized) +{ + + @if (_page.UserId == null) + { + + + @if (PageState.Site.Themes != null) + { +
+
+ +
+ +
+
+ @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) { - +
+ +
+ +
+
+
+ +
+ + @if (_children != null && _children.Count > 0 && (_insert == "<" || _insert == ">")) + { + + } +
+
} + else + { +
+ +
+ +
+
+
+ +
+ +
+
+ } +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+ + } + + @if (_page.UserId == null) + { + + @if (_permissions != null) + { +
+
+ +
+
+ } +
+ + @if (_pageModules != null) + { + +
+   +   + @Localizer["ModuleTitle"] + @Localizer["ModuleDefinition"] +
+ + + + @context.Title + @context.ModuleDefinition?.Name + +
+ } +
+ + } + @if (_themeSettingsType != null) + { + + @ThemeSettingsComponent + +
+ } + + } + else + { + +
- -
-
-
- -
- +
@@ -141,73 +270,26 @@
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
- - } -
- - @if (_permissions != null) - { -
-
- -
-
- } -
- - @if(_pageModules != null) - { - -
-   -   - @Localizer["ModuleTitle"] - @Localizer["ModuleDefinition"] -
- - - - @context.Title - @context.ModuleDefinition?.Name - -
- } -
- @if (_themeSettingsType != null) - { - - @ThemeSettingsComponent - -
+ + @if (_themeSettingsType != null) + { + + @ThemeSettingsComponent + +
+ } +
} - -
- - -
+
+ + + +} @code { - public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.Admin; + public override SecurityAccessLevel SecurityAccessLevel => SecurityAccessLevel.View; + private bool _initialized = false; private ElementReference form; private bool validated = false; private List _themes = new List(); @@ -243,7 +325,8 @@ private string _deletedby; private DateTime? _deletedon; private bool _refresh = false; - protected Page page; + protected Page _page = null; + protected Page _parent = null; protected override async Task OnInitializedAsync() { @@ -253,23 +336,24 @@ _themes = ThemeService.GetThemeControls(PageState.Site.Themes); _pageId = Int32.Parse(PageState.QueryString["id"]); - page = PageState.Pages.FirstOrDefault(item => item.PageId == _pageId); + _page = await PageService.GetPageAsync(_pageId); - if (page != null) + if (_page != null && UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, _page.PermissionList)) { - _name = page.Name; - if (page.ParentId == null) + _name = _page.Name; + if (_page.ParentId == null) { _parentid = "-1"; } else { - _parentid = page.ParentId.ToString(); + _parentid = _page.ParentId.ToString(); + _parent = PageState.Pages.FirstOrDefault(item => item.PageId == _page.ParentId); } _currentparentid = _parentid; - _isnavigation = page.IsNavigation.ToString(); - _isclickable = page.IsClickable.ToString(); - _path = page.Path; + _isnavigation = _page.IsNavigation.ToString(); + _isclickable = _page.IsClickable.ToString(); + _path = _page.Path; if (string.IsNullOrEmpty(_path)) { _path = "/"; @@ -281,43 +365,49 @@ _path = _path.Substring(_path.LastIndexOf("/") + 1); } } - _url = page.Url; - _ispersonalizable = page.IsPersonalizable.ToString(); + _url = _page.Url; + _icon = _page.Icon; + _ispersonalizable = _page.IsPersonalizable.ToString(); // appearance - _title = page.Title; - _icon = page.Icon; - _themetype = page.ThemeType; + _title = _page.Title; + _themetype = _page.ThemeType; if (string.IsNullOrEmpty(_themetype)) { _themetype = PageState.Site.DefaultThemeType; } _containers = ThemeService.GetContainerControls(PageState.Site.Themes, _themetype); - _containertype = page.DefaultContainerType; + _containertype = _page.DefaultContainerType; if (string.IsNullOrEmpty(_containertype)) { _containertype = PageState.Site.DefaultContainerType; } // page content - _headcontent = page.HeadContent; - _bodycontent = page.BodyContent; + _headcontent = _page.HeadContent; + _bodycontent = _page.BodyContent; // permissions - _permissions = page.PermissionList; + _permissions = _page.PermissionList; // page modules - _pageModules = PageState.Modules.Where(m => m.PageId == page.PageId).ToList(); + _pageModules = PageState.Modules.Where(m => m.PageId == _page.PageId).ToList(); // audit - _createdby = page.CreatedBy; - _createdon = page.CreatedOn; - _modifiedby = page.ModifiedBy; - _modifiedon = page.ModifiedOn; - _deletedby = page.DeletedBy; - _deletedon = page.DeletedOn; + _createdby = _page.CreatedBy; + _createdon = _page.CreatedOn; + _modifiedby = _page.ModifiedBy; + _modifiedon = _page.ModifiedOn; + _deletedby = _page.DeletedBy; + _deletedon = _page.DeletedOn; ThemeSettings(); + _initialized = true; + } + else + { + await logger.LogWarning("Error Loading Page {PageId}", _pageId); + AddModuleMessage(Localizer["Error.Page.Load"], MessageType.Error); } } catch (Exception ex) @@ -331,7 +421,7 @@ { try { - PageModule pagemodule = await PageModuleService.GetPageModuleAsync(page.PageId, module.ModuleId); + PageModule pagemodule = await PageModuleService.GetPageModuleAsync(_page.PageId, module.ModuleId); pagemodule.IsDeleted = true; await PageModuleService.UpdatePageModuleAsync(pagemodule); await logger.LogInformation(LogFunction.Update,"Module Deleted {Title}", module.Title); @@ -435,15 +525,13 @@ var interop = new Interop(JSRuntime); if (await interop.FormValid(form)) { - Page page = null; try { if (!string.IsNullOrEmpty(_themetype) && _containertype != "-") { - page = PageState.Pages.FirstOrDefault(item => item.PageId == _pageId); - string currentPath = page.Path; + string currentPath = _page.Path; - page.Name = _name; + _page.Name = _name; if (string.IsNullOrEmpty(_path)) { @@ -460,33 +548,33 @@ if (_parentid == "-1") { - page.ParentId = null; - page.Path = Utilities.GetFriendlyUrl(_path); + _page.ParentId = null; + _page.Path = Utilities.GetFriendlyUrl(_path); } else { - page.ParentId = Int32.Parse(_parentid); - Page parent = PageState.Pages.FirstOrDefault(item => item.PageId == page.ParentId); + _page.ParentId = Int32.Parse(_parentid); + Page parent = PageState.Pages.FirstOrDefault(item => item.PageId == _page.ParentId); if (parent.Path == string.Empty) { - page.Path = Utilities.GetFriendlyUrl(parent.Name) + "/" + Utilities.GetFriendlyUrl(_path); + _page.Path = Utilities.GetFriendlyUrl(parent.Name) + "/" + Utilities.GetFriendlyUrl(_path); } else { - page.Path = parent.Path + "/" + Utilities.GetFriendlyUrl(_path); + _page.Path = parent.Path + "/" + Utilities.GetFriendlyUrl(_path); } } var _pages = await PageService.GetPagesAsync(PageState.Site.SiteId); - if (_pages.Any(item => item.Path == page.Path && item.PageId != page.PageId)) + if (_pages.Any(item => item.Path == _page.Path && item.PageId != _page.PageId)) { AddModuleMessage(string.Format(Localizer["Mesage.Page.PathExists"], _path), MessageType.Warning); return; } - if (page.ParentId == null && Constants.ReservedRoutes.Contains(page.Name.ToLower())) + if (_page.ParentId == null && Constants.ReservedRoutes.Contains(_page.Name.ToLower())) { - AddModuleMessage(string.Format(Localizer["Message.Page.Reserved"], page.Name), MessageType.Warning); + AddModuleMessage(string.Format(Localizer["Message.Page.Reserved"], _page.Name), MessageType.Warning); return; } @@ -496,57 +584,59 @@ switch (_insert) { case "<<": - page.Order = 0; + _page.Order = 0; break; case "<": child = PageState.Pages.FirstOrDefault(item => item.PageId == _childid); - if (child != null) page.Order = child.Order - 1; + if (child != null) _page.Order = child.Order - 1; break; case ">": child = PageState.Pages.FirstOrDefault(item => item.PageId == _childid); - if (child != null) page.Order = child.Order + 1; + if (child != null) _page.Order = child.Order + 1; break; case ">>": - page.Order = int.MaxValue; + _page.Order = int.MaxValue; break; } } - page.IsNavigation = (_isnavigation == null || Boolean.Parse(_isnavigation)); - page.IsClickable = (_isclickable == null ? true : Boolean.Parse(_isclickable)); - page.Url = _url; - page.IsPersonalizable = (_ispersonalizable != null && Boolean.Parse(_ispersonalizable)); - page.UserId = null; + _page.IsNavigation = (_isnavigation == null || Boolean.Parse(_isnavigation)); + _page.IsClickable = (_isclickable == null ? true : Boolean.Parse(_isclickable)); + _page.Url = _url; + _page.IsPersonalizable = (_ispersonalizable != null && Boolean.Parse(_ispersonalizable)); // appearance - page.Title = _title; - page.Icon = _icon ?? string.Empty; - page.ThemeType = (_themetype != "-") ? _themetype : string.Empty; - if (!string.IsNullOrEmpty(page.ThemeType) && page.ThemeType == PageState.Site.DefaultThemeType) + _page.Title = _title; + _page.Icon = _icon ?? string.Empty; + _page.ThemeType = (_themetype != "-") ? _themetype : string.Empty; + if (!string.IsNullOrEmpty(_page.ThemeType) && _page.ThemeType == PageState.Site.DefaultThemeType) { - page.ThemeType = string.Empty; + _page.ThemeType = string.Empty; } - page.DefaultContainerType = (_containertype != "-") ? _containertype : string.Empty; - if (!string.IsNullOrEmpty(page.DefaultContainerType) && page.DefaultContainerType == PageState.Site.DefaultContainerType) + _page.DefaultContainerType = (_containertype != "-") ? _containertype : string.Empty; + if (!string.IsNullOrEmpty(_page.DefaultContainerType) && _page.DefaultContainerType == PageState.Site.DefaultContainerType) { - page.DefaultContainerType = string.Empty; + _page.DefaultContainerType = string.Empty; } // page content - page.HeadContent = _headcontent; - page.BodyContent = _bodycontent; + _page.HeadContent = _headcontent; + _page.BodyContent = _bodycontent; // permissions - page.PermissionList = _permissionGrid.GetPermissionList(); + if (_page.UserId == null) + { + _page.PermissionList = _permissionGrid.GetPermissionList(); + } - page = await PageService.UpdatePageAsync(page); - await PageService.UpdatePageOrderAsync(page.SiteId, page.PageId, page.ParentId); + _page = await PageService.UpdatePageAsync(_page); + await PageService.UpdatePageOrderAsync(_page.SiteId, _page.PageId, _page.ParentId); if (_currentparentid == string.Empty) { - await PageService.UpdatePageOrderAsync(page.SiteId, page.PageId, null); + await PageService.UpdatePageOrderAsync(_page.SiteId, _page.PageId, null); } else { - await PageService.UpdatePageOrderAsync(page.SiteId, page.PageId, int.Parse(_currentparentid)); + await PageService.UpdatePageOrderAsync(_page.SiteId, _page.PageId, int.Parse(_currentparentid)); } // update child paths @@ -554,7 +644,7 @@ { foreach (Page p in PageState.Pages.Where(item => item.Path.StartsWith(currentPath))) { - p.Path = p.Path.Replace(currentPath, page.Path); + p.Path = p.Path.Replace(currentPath, _page.Path); await PageService.UpdatePageAsync(p); } } @@ -564,14 +654,14 @@ await themeSettingsControl.UpdateSettings(); } - await logger.LogInformation("Page Saved {Page}", page); + await logger.LogInformation("Page Saved {Page}", _page); if (!string.IsNullOrEmpty(PageState.ReturnUrl)) { NavigationManager.NavigateTo(PageState.ReturnUrl); } else { - NavigationManager.NavigateTo(NavigateUrl(page.Path)); + NavigationManager.NavigateTo(NavigateUrl(_page.Path)); } } else @@ -581,7 +671,7 @@ } catch (Exception ex) { - await logger.LogError(ex, "Error Saving Page {Page} {Error}", page, ex.Message); + await logger.LogError(ex, "Error Saving Page {Page} {Error}", _page, ex.Message); AddModuleMessage(Localizer["Error.Page.Save"], MessageType.Error); } } diff --git a/Oqtane.Client/Modules/Admin/Pages/Index.razor b/Oqtane.Client/Modules/Admin/Pages/Index.razor index 198e3678..d71dc964 100644 --- a/Oqtane.Client/Modules/Admin/Pages/Index.razor +++ b/Oqtane.Client/Modules/Admin/Pages/Index.razor @@ -5,7 +5,7 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer -@if (PageState.Pages != null) +@if (PageState.Pages != null && UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) { diff --git a/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx b/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx index c2a71f84..a9360734 100644 --- a/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx +++ b/Oqtane.Client/Resources/Modules/Admin/Pages/Add.resx @@ -150,8 +150,8 @@ Select Container - - Error Initializing Page + + Error Loading Page Error Loading Child Pages For Parent diff --git a/Oqtane.Client/Themes/BlazorTheme/Themes/Default.razor b/Oqtane.Client/Themes/BlazorTheme/Themes/Default.razor index c5682527..e4c77abf 100644 --- a/Oqtane.Client/Themes/BlazorTheme/Themes/Default.razor +++ b/Oqtane.Client/Themes/BlazorTheme/Themes/Default.razor @@ -33,7 +33,7 @@ // obtained from https://cdnjs.com/libraries new Resource { ResourceType = ResourceType.Stylesheet, Url = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.0/css/bootstrap.min.css", Integrity = "sha512-XWTTruHZEYJsxV3W/lSXG1n3Q39YIWOstqvmFsdNEEQfHoZ6vm6E9GK2OrF6DSJSpIbRbi+Nn0WDPID9O7xB2Q==", CrossOrigin = "anonymous" }, new Resource { ResourceType = ResourceType.Stylesheet, Url = ThemePath() + "Theme.css" }, - new Resource { ResourceType = ResourceType.Script, Bundle = "Bootstrap", Url = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.0/js/bootstrap.bundle.min.js", Integrity = "sha512-9GacT4119eY3AcosfWtHMsT5JyZudrexyEVzTBWV3viP/YfB9e2pEy3N7WXL3SV6ASXpTU0vzzSxsbfsuUH4sQ==", CrossOrigin = "anonymous" } + new Resource { ResourceType = ResourceType.Script, Url = "https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.2.0/js/bootstrap.bundle.min.js", Integrity = "sha512-9GacT4119eY3AcosfWtHMsT5JyZudrexyEVzTBWV3viP/YfB9e2pEy3N7WXL3SV6ASXpTU0vzzSxsbfsuUH4sQ==", CrossOrigin = "anonymous" } }; } \ No newline at end of file diff --git a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor index 7bfe46c3..180535b2 100644 --- a/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor +++ b/Oqtane.Client/Themes/Controls/Theme/ControlPanel.razor @@ -56,7 +56,7 @@
} - @if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Admin)) + @if (UserSecurity.IsAuthorized(PageState.User, PermissionNames.Edit, PageState.Page.PermissionList)) {
@@ -65,7 +65,10 @@
- + @if (PageState.Page.UserId == null) + { + + }
@@ -520,7 +523,7 @@ switch (location) { case "Add": - url = EditUrl("admin/pages", module.ModuleId, location, $"returnurl={WebUtility.UrlEncode(PageState.Route.PathAndQuery)}"); + url = EditUrl("admin/pages", module.ModuleId, location, $"id={PageState.Page.PageId}&returnurl={WebUtility.UrlEncode(PageState.Route.PathAndQuery)}"); break; case "Edit": url = EditUrl("admin/pages", module.ModuleId, location, $"id={PageState.Page.PageId}&returnurl={WebUtility.UrlEncode(PageState.Route.PathAndQuery)}"); diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs index f4a9c62d..ce81eec2 100644 --- a/Oqtane.Server/Controllers/PageController.cs +++ b/Oqtane.Server/Controllers/PageController.cs @@ -10,6 +10,8 @@ using Oqtane.Enums; using Oqtane.Extensions; using Oqtane.Infrastructure; using Oqtane.Repository; +using Oqtane.Modules.Admin.Users; +using System.IO; namespace Oqtane.Controllers { @@ -73,6 +75,26 @@ namespace Oqtane.Controllers return pages; } + // GET api//5 + [HttpGet("{id}")] + public Page Get(int id) + { + var page = _pages.GetPage(id); + if (page != null && page.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, PermissionNames.View, page.PermissionList)) + { + page.Settings = _settings.GetSettings(EntityNames.Page, page.PageId) + .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.PermissionList)) + .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); + return page; + } + else + { + _logger.Log(LogLevel.Error, this, LogFunction.Security, "Unauthorized Page Get Attempt {PageId}", id); + HttpContext.Response.StatusCode = (int)HttpStatusCode.Forbidden; + return null; + } + } + // GET api//path/x?path=y [HttpGet("path/{siteid}")] public Page Get(string path, int siteid) diff --git a/Oqtane.Server/Infrastructure/SiteTemplates/DefaultSiteTemplate.cs b/Oqtane.Server/Infrastructure/SiteTemplates/DefaultSiteTemplate.cs index 9df850ea..04824881 100644 --- a/Oqtane.Server/Infrastructure/SiteTemplates/DefaultSiteTemplate.cs +++ b/Oqtane.Server/Infrastructure/SiteTemplates/DefaultSiteTemplate.cs @@ -141,7 +141,7 @@ namespace Oqtane.SiteTemplates Path = "develop", Icon = "oi oi-wrench", IsNavigation = true, - IsPersonalizable = true, + IsPersonalizable = false, PermissionList = new List { new Permission(PermissionNames.View, RoleNames.Host, true), new Permission(PermissionNames.Edit, RoleNames.Host, true) diff --git a/Oqtane.Server/Repository/SiteRepository.cs b/Oqtane.Server/Repository/SiteRepository.cs index 92916fe9..948992a6 100644 --- a/Oqtane.Server/Repository/SiteRepository.cs +++ b/Oqtane.Server/Repository/SiteRepository.cs @@ -694,6 +694,7 @@ namespace Oqtane.Repository PermissionList = new List { new Permission(PermissionNames.View, RoleNames.Admin, true), + new Permission(PermissionNames.View, RoleNames.Registered, true), new Permission(PermissionNames.Edit, RoleNames.Admin, true) }, PageTemplateModules = new List diff --git a/Oqtane.Server/Repository/ThemeRepository.cs b/Oqtane.Server/Repository/ThemeRepository.cs index 2ca82c36..7a2de735 100644 --- a/Oqtane.Server/Repository/ThemeRepository.cs +++ b/Oqtane.Server/Repository/ThemeRepository.cs @@ -87,6 +87,8 @@ namespace Oqtane.Repository Theme.Resources = theme.Resources; Theme.Themes = theme.Themes; Theme.Containers = theme.Containers; + Theme.ThemeSettingsType = theme.ThemeSettingsType; + Theme.ContainerSettingsType = theme.ContainerSettingsType; Themes.Add(Theme); }