diff --git a/Oqtane.Client/Modules/Admin/Dashboard/Index.razor b/Oqtane.Client/Modules/Admin/Dashboard/Index.razor index 6c665ba2..3e3eb82c 100644 --- a/Oqtane.Client/Modules/Admin/Dashboard/Index.razor +++ b/Oqtane.Client/Modules/Admin/Dashboard/Index.razor @@ -27,6 +27,6 @@ protected override void OnInitialized() { var admin = PageState.Pages.FirstOrDefault(item => item.Path == "admin"); - _pages = PageState.Pages.Where(item => item.ParentId == admin?.PageId).ToList(); + _pages = PageState.Pages.Where(item => item.ParentId == admin?.PageId && !item.IsDeleted).ToList(); } } diff --git a/Oqtane.Client/Modules/Admin/Logs/Index.razor b/Oqtane.Client/Modules/Admin/Logs/Index.razor index 7a30893d..853409cb 100644 --- a/Oqtane.Client/Modules/Admin/Logs/Index.razor +++ b/Oqtane.Client/Modules/Admin/Logs/Index.razor @@ -195,8 +195,8 @@ else { try { - var settings = PageState.Site.Settings; - settings = SettingService.SetSetting(settings, "LogRetention", _retention); + var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); + settings = SettingService.SetSetting(settings, "LogRetention", _retention, true); await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId); AddModuleMessage(Localizer["Success.SaveSiteSettings"], MessageType.Success); diff --git a/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor b/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor index 27f32ea7..d81480b5 100644 --- a/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor +++ b/Oqtane.Client/Modules/Admin/ModuleCreator/Index.razor @@ -128,7 +128,7 @@ else var moduleDefinition = new ModuleDefinition { Owner = _owner, Name = _module, Description = _description, Template = _template, Version = _reference }; moduleDefinition = await ModuleDefinitionService.CreateModuleDefinitionAsync(moduleDefinition); - var settings = ModuleState.Settings; + var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId); SettingService.SetSetting(settings, "ModuleDefinitionName", moduleDefinition.ModuleDefinitionName); await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId); diff --git a/Oqtane.Client/Modules/Admin/Site/Index.razor b/Oqtane.Client/Modules/Admin/Site/Index.razor index 63ce2afc..63f22032 100644 --- a/Oqtane.Client/Modules/Admin/Site/Index.razor +++ b/Oqtane.Client/Modules/Admin/Site/Index.razor @@ -479,12 +479,12 @@ site = await SiteService.UpdateSiteAsync(site); var settings = await SettingService.GetSiteSettingsAsync(site.SiteId); - SettingService.SetSetting(settings, "SMTPHost", _smtphost, false); - SettingService.SetSetting(settings, "SMTPPort", _smtpport, false); - SettingService.SetSetting(settings, "SMTPSSL", _smtpssl, false); - SettingService.SetSetting(settings, "SMTPUsername", _smtpusername, false); - SettingService.SetSetting(settings, "SMTPPassword", _smtppassword, false); - SettingService.SetSetting(settings, "SMTPSender", _smtpsender, false); + SettingService.SetSetting(settings, "SMTPHost", _smtphost, true); + SettingService.SetSetting(settings, "SMTPPort", _smtpport, true); + SettingService.SetSetting(settings, "SMTPSSL", _smtpssl, true); + SettingService.SetSetting(settings, "SMTPUsername", _smtpusername, true); + SettingService.SetSetting(settings, "SMTPPassword", _smtppassword, true); + SettingService.SetSetting(settings, "SMTPSender", _smtpsender, true); await SettingService.UpdateSiteSettingsAsync(settings, site.SiteId); if (UserSecurity.IsAuthorized(PageState.User, RoleNames.Host)) @@ -596,12 +596,12 @@ try { var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); - SettingService.SetSetting(settings, "SMTPHost", _smtphost); - SettingService.SetSetting(settings, "SMTPPort", _smtpport); - SettingService.SetSetting(settings, "SMTPSSL", _smtpssl); - SettingService.SetSetting(settings, "SMTPUsername", _smtpusername); - SettingService.SetSetting(settings, "SMTPPassword", _smtppassword); - SettingService.SetSetting(settings, "SMTPSender", _smtpsender); + SettingService.SetSetting(settings, "SMTPHost", _smtphost, true); + SettingService.SetSetting(settings, "SMTPPort", _smtpport, true); + SettingService.SetSetting(settings, "SMTPSSL", _smtpssl, true); + SettingService.SetSetting(settings, "SMTPUsername", _smtpusername, true); + SettingService.SetSetting(settings, "SMTPPassword", _smtppassword, true); + SettingService.SetSetting(settings, "SMTPSender", _smtpsender, true); await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId); await logger.LogInformation("Site SMTP Settings Saved"); diff --git a/Oqtane.Client/Modules/Admin/Sql/Index.razor b/Oqtane.Client/Modules/Admin/Sql/Index.razor index b22d279e..db41daaa 100644 --- a/Oqtane.Client/Modules/Admin/Sql/Index.razor +++ b/Oqtane.Client/Modules/Admin/Sql/Index.razor @@ -57,22 +57,20 @@ else { @if (_results.Count > 0) { -
- -
- @foreach (KeyValuePair kvp in _results.First()) - { - @kvp.Key - } -
- - @foreach (KeyValuePair kvp in context) - { - @kvp.Value - } - -
-
+ +
+ @foreach (KeyValuePair kvp in _results.First()) + { + @kvp.Key + } +
+ + @foreach (KeyValuePair kvp in context) + { + @kvp.Value + } + +
} else { diff --git a/Oqtane.Client/Modules/Admin/Visitors/Index.razor b/Oqtane.Client/Modules/Admin/Visitors/Index.razor index f0613839..a3f97ecd 100644 --- a/Oqtane.Client/Modules/Admin/Visitors/Index.razor +++ b/Oqtane.Client/Modules/Admin/Visitors/Index.razor @@ -151,9 +151,9 @@ else site.VisitorTracking = bool.Parse(_tracking); await SiteService.UpdateSiteAsync(site); - var settings = PageState.Site.Settings; - settings = SettingService.SetSetting(settings, "VisitorFilter", _filter); - settings = SettingService.SetSetting(settings, "VisitorRetention", _retention); + var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); + settings = SettingService.SetSetting(settings, "VisitorFilter", _filter, true); + settings = SettingService.SetSetting(settings, "VisitorRetention", _retention, true); await SettingService.UpdateSiteSettingsAsync(settings, PageState.Site.SiteId); AddModuleMessage(Localizer["Success.SaveSiteSettings"], MessageType.Success); diff --git a/Oqtane.Client/Modules/Controls/LocalizableComponent.cs b/Oqtane.Client/Modules/Controls/LocalizableComponent.cs index 773df857..711504c6 100644 --- a/Oqtane.Client/Modules/Controls/LocalizableComponent.cs +++ b/Oqtane.Client/Modules/Controls/LocalizableComponent.cs @@ -13,6 +13,9 @@ namespace Oqtane.Modules.Controls [Parameter] public string ResourceKey { get; set; } + [Parameter] + public string ResourceType { get; set; } + protected bool IsLocalizable { get; private set; } protected string Localize(string name) => _localizer?[name] ?? name; @@ -50,9 +53,14 @@ namespace Oqtane.Modules.Controls { IsLocalizable = false; - if (!String.IsNullOrEmpty(ResourceKey) && ModuleState?.ModuleType != null) + if (string.IsNullOrEmpty(ResourceType)) { - var moduleType = Type.GetType(ModuleState.ModuleType); + ResourceType = ModuleState?.ModuleType; + } + + if (!String.IsNullOrEmpty(ResourceKey) && !string.IsNullOrEmpty(ResourceType)) + { + var moduleType = Type.GetType(ResourceType); if (moduleType != null) { using (var scope = ServiceActivator.GetScope()) diff --git a/Oqtane.Client/Modules/Controls/Pager.razor b/Oqtane.Client/Modules/Controls/Pager.razor index bd491d1f..99dbc1ca 100644 --- a/Oqtane.Client/Modules/Controls/Pager.razor +++ b/Oqtane.Client/Modules/Controls/Pager.razor @@ -54,21 +54,23 @@ } @if (Format == "Table" && Row != null) { - - - @Header - - - @foreach (var item in ItemList) - { - @Row(item) - @if (Detail != null) - { - @Detail(item) - } - } - -
+
+ + + @Header + + + @foreach (var item in ItemList) + { + @Row(item) + @if (Detail != null) + { + @Detail(item) + } + } + +
+
} @if (Format == "Grid" && Row != null) { diff --git a/Oqtane.Client/Modules/HtmlText/Settings.razor b/Oqtane.Client/Modules/HtmlText/Settings.razor index 8aab9c77..237049a6 100644 --- a/Oqtane.Client/Modules/HtmlText/Settings.razor +++ b/Oqtane.Client/Modules/HtmlText/Settings.razor @@ -5,44 +5,45 @@ @inject IStringLocalizer Localizer @inject IStringLocalizer SharedLocalizer -
-
- -
- -
+
+
+ +
+
+
- @code { - private string _allowfilemanagement; +@code { + private string resourceType = "Oqtane.Modules.HtmlText.Settings, Oqtane.Client"; // for localization + private string _allowfilemanagement; - protected override void OnInitialized() + protected override void OnInitialized() + { + try { - try - { - _allowfilemanagement = SettingService.GetSetting(ModuleState.Settings, "AllowFileManagement", "true"); - } - catch (Exception ex) - { - ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); - } + _allowfilemanagement = SettingService.GetSetting(ModuleState.Settings, "AllowFileManagement", "true"); } - - public async Task UpdateSettings() + catch (Exception ex) { - try - { - var settings = ModuleState.Settings; - settings = SettingService.SetSetting(settings, "AllowFileManagement", _allowfilemanagement); - await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId); - } - catch (Exception ex) - { - ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); - } + ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); } } + + public async Task UpdateSettings() + { + try + { + var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId); + settings = SettingService.SetSetting(settings, "AllowFileManagement", _allowfilemanagement); + await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId); + } + catch (Exception ex) + { + ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); + } + } +} diff --git a/Oqtane.Client/Resources/Themes/OqtaneTheme/Containers/ContainerSettings.resx b/Oqtane.Client/Resources/Themes/OqtaneTheme/ContainerSettings.resx similarity index 51% rename from Oqtane.Client/Resources/Themes/OqtaneTheme/Containers/ContainerSettings.resx rename to Oqtane.Client/Resources/Themes/OqtaneTheme/ContainerSettings.resx index 4c05a1fb..1e4a939f 100644 --- a/Oqtane.Client/Resources/Themes/OqtaneTheme/Containers/ContainerSettings.resx +++ b/Oqtane.Client/Resources/Themes/OqtaneTheme/ContainerSettings.resx @@ -1,65 +1,65 @@  - + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + diff --git a/Oqtane.Client/Resources/Themes/OqtaneTheme/Themes/ThemeSettings.resx b/Oqtane.Client/Resources/Themes/OqtaneTheme/ThemeSettings.resx similarity index 99% rename from Oqtane.Client/Resources/Themes/OqtaneTheme/Themes/ThemeSettings.resx rename to Oqtane.Client/Resources/Themes/OqtaneTheme/ThemeSettings.resx index 7d8c7c4d..7200f2dd 100644 --- a/Oqtane.Client/Resources/Themes/OqtaneTheme/Themes/ThemeSettings.resx +++ b/Oqtane.Client/Resources/Themes/OqtaneTheme/ThemeSettings.resx @@ -121,7 +121,7 @@ Specify if a Footer pane should always be displayed in a fixed location at the bottom of the page. - Display Footer? + Display Fixed Footer? Specify if a Login option should be displayed, Note that this option does not prevent the login page from being accessible via a direct url. diff --git a/Oqtane.Client/Services/Interfaces/ISettingService.cs b/Oqtane.Client/Services/Interfaces/ISettingService.cs index e02261f8..60099fd5 100644 --- a/Oqtane.Client/Services/Interfaces/ISettingService.cs +++ b/Oqtane.Client/Services/Interfaces/ISettingService.cs @@ -206,7 +206,7 @@ namespace Oqtane.Services /// Dictionary SetSetting(Dictionary settings, string settingName, string settingValue); - Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPublic); + Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPrivate); Dictionary MergeSettings(Dictionary settings1, Dictionary settings2); diff --git a/Oqtane.Client/Services/SettingService.cs b/Oqtane.Client/Services/SettingService.cs index f67d585d..8f25bbaf 100644 --- a/Oqtane.Client/Services/SettingService.cs +++ b/Oqtane.Client/Services/SettingService.cs @@ -131,12 +131,12 @@ namespace Oqtane.Services foreach (KeyValuePair kvp in settings) { string value = kvp.Value; - bool ispublic = true; + bool isprivate = false; if (value.StartsWith("[Private]")) { value = value.Substring(9); // remove [Private] - ispublic = false; + isprivate = true; } Setting setting = settingsList.FirstOrDefault(item => item.SettingName.Equals(kvp.Key, StringComparison.OrdinalIgnoreCase)); @@ -147,22 +147,21 @@ namespace Oqtane.Services setting.EntityId = entityId; setting.SettingName = kvp.Key; setting.SettingValue = value; - setting.IsPublic = ispublic; + setting.IsPrivate = isprivate; setting = await AddSettingAsync(setting); } else { - if (setting.SettingValue != value || setting.IsPublic != ispublic) + if (setting.SettingValue != value) { setting.SettingValue = value; - setting.IsPublic = ispublic; + setting.IsPrivate = isprivate; setting = await UpdateSettingAsync(setting); } } } } - public async Task GetSettingAsync(string entityName, int settingId) { return await GetJsonAsync($"{Apiurl}/{settingId}/{entityName}"); @@ -196,16 +195,16 @@ namespace Oqtane.Services public Dictionary SetSetting(Dictionary settings, string settingName, string settingValue) { - return SetSetting(settings, settingName, settingValue, true); + return SetSetting(settings, settingName, settingValue, false); } - public Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPublic) + public Dictionary SetSetting(Dictionary settings, string settingName, string settingValue, bool isPrivate) { if (settings == null) { settings = new Dictionary(); } - settingValue = (isPublic) ? settingValue : "[Private]" + settingValue; + settingValue = (isPrivate) ? "[Private]" + settingValue : settingValue; if (settings.ContainsKey(settingName)) { settings[settingName] = settingValue; diff --git a/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor b/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor index 44e41bbd..b0c7774f 100644 --- a/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor +++ b/Oqtane.Client/Themes/OqtaneTheme/Containers/ContainerSettings.razor @@ -6,7 +6,7 @@
- +
@@ -31,7 +31,7 @@
- +
@@ -65,41 +65,42 @@
- @code { - private string _title = "true"; - private string _background = ""; - private string _text = ""; - private string _border = ""; +@code { + private string resourceType = "Oqtane.Themes.OqtaneTheme.ContainerSettings, Oqtane.Client"; // for localization + private string _title = "true"; + private string _background = ""; + private string _text = ""; + private string _border = ""; - protected override void OnInitialized() + protected override void OnInitialized() + { + try { - try - { - _title = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Title", "true"); - _background = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Background", ""); - _text = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Text", ""); - _border = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Border", ""); - } - catch (Exception ex) - { - ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); - } + _title = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Title", "true"); + _background = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Background", ""); + _text = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Text", ""); + _border = SettingService.GetSetting(ModuleState.Settings, GetType().Namespace + ":Border", ""); } - - public async Task UpdateSettings() + catch (Exception ex) { - try - { - var settings = ModuleState.Settings; - settings = SettingService.SetSetting(settings, GetType().Namespace + ":Title", _title); - settings = SettingService.SetSetting(settings, GetType().Namespace + ":Background", _background); - settings = SettingService.SetSetting(settings, GetType().Namespace + ":Text", _text); - settings = SettingService.SetSetting(settings, GetType().Namespace + ":Border", _border); - await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId); - } - catch (Exception ex) - { - ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); - } + ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); } } + + public async Task UpdateSettings() + { + try + { + var settings = await SettingService.GetModuleSettingsAsync(ModuleState.ModuleId); + settings = SettingService.SetSetting(settings, GetType().Namespace + ":Title", _title); + settings = SettingService.SetSetting(settings, GetType().Namespace + ":Background", _background); + settings = SettingService.SetSetting(settings, GetType().Namespace + ":Text", _text); + settings = SettingService.SetSetting(settings, GetType().Namespace + ":Border", _border); + await SettingService.UpdateModuleSettingsAsync(settings, ModuleState.ModuleId); + } + catch (Exception ex) + { + ModuleInstance.AddModuleMessage(ex.Message, MessageType.Error); + } + } +} diff --git a/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor b/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor index ecebce19..25f03f45 100644 --- a/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor +++ b/Oqtane.Client/Themes/OqtaneTheme/Themes/ThemeSettings.razor @@ -8,7 +8,7 @@
- +
@@ -30,7 +30,7 @@
- +
@@ -52,16 +52,17 @@
@code { - private string _scope = "page"; - private string _login = "-"; - private string _register = "-"; - private string _footer = "-"; + private string resourceType = "Oqtane.Themes.OqtaneTheme.ThemeSettings, Oqtane.Client"; // for localization + private string _scope = "page"; + private string _login = "-"; + private string _register = "-"; + private string _footer = "-"; - protected override async Task OnInitializedAsync() - { - try - { - await LoadSettings(); + protected override async Task OnInitializedAsync() + { + try + { + await LoadSettings(); } catch (Exception ex) { @@ -110,7 +111,7 @@ { if (_scope == "site") { - var settings = PageState.Site.Settings; + var settings = await SettingService.GetSiteSettingsAsync(PageState.Site.SiteId); if (_login != "-") { settings = SettingService.SetSetting(settings, GetType().Namespace + ":Login", _login, true); @@ -127,7 +128,7 @@ } else { - var settings = PageState.Page.Settings; + var settings = await SettingService.GetPageSettingsAsync(PageState.Page.PageId); if (_login != "-") { settings = SettingService.SetSetting(settings, GetType().Namespace + ":Login", _login); diff --git a/Oqtane.Server/Controllers/ModuleController.cs b/Oqtane.Server/Controllers/ModuleController.cs index cfcad970..100f30ad 100644 --- a/Oqtane.Server/Controllers/ModuleController.cs +++ b/Oqtane.Server/Controllers/ModuleController.cs @@ -75,7 +75,7 @@ namespace Oqtane.Controllers module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName); module.Settings = settings.Where(item => item.EntityId == pagemodule.ModuleId) - .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, pagemodule.Module.Permissions)) + .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, pagemodule.Module.Permissions)) .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); modules.Add(module); @@ -102,7 +102,7 @@ namespace Oqtane.Controllers List moduledefinitions = _moduleDefinitions.GetModuleDefinitions(module.SiteId).ToList(); module.ModuleDefinition = moduledefinitions.Find(item => item.ModuleDefinitionName == module.ModuleDefinitionName); module.Settings = _settings.GetSettings(EntityNames.Module, id) - .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, module.Permissions)) + .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, module.Permissions)) .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); return module; } diff --git a/Oqtane.Server/Controllers/PageController.cs b/Oqtane.Server/Controllers/PageController.cs index a0bf6213..5112924f 100644 --- a/Oqtane.Server/Controllers/PageController.cs +++ b/Oqtane.Server/Controllers/PageController.cs @@ -57,7 +57,7 @@ namespace Oqtane.Controllers if (_userPermissions.IsAuthorized(User, PermissionNames.View, page.Permissions)) { page.Settings = settings.Where(item => item.EntityId == page.PageId) - .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions)) + .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions)) .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); pages.Add(page); } @@ -89,7 +89,7 @@ namespace Oqtane.Controllers if (page != null && page.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User,PermissionNames.View, page.Permissions)) { page.Settings = _settings.GetSettings(EntityNames.Page, page.PageId) - .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions)) + .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions)) .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); return page; } @@ -109,7 +109,7 @@ namespace Oqtane.Controllers if (page != null && page.SiteId == _alias.SiteId && _userPermissions.IsAuthorized(User, PermissionNames.View, page.Permissions)) { page.Settings = _settings.GetSettings(EntityNames.Page, page.PageId) - .Where(item => item.IsPublic || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions)) + .Where(item => !item.IsPrivate || _userPermissions.IsAuthorized(User, PermissionNames.Edit, page.Permissions)) .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); return page; } diff --git a/Oqtane.Server/Controllers/SettingController.cs b/Oqtane.Server/Controllers/SettingController.cs index 248342ab..6165a07e 100644 --- a/Oqtane.Server/Controllers/SettingController.cs +++ b/Oqtane.Server/Controllers/SettingController.cs @@ -41,9 +41,9 @@ namespace Oqtane.Controllers if (IsAuthorized(entityName, entityId, PermissionNames.View)) { settings = _settings.GetSettings(entityName, entityId).ToList(); - if (FilterPublic(entityName, entityId)) + if (FilterPrivate(entityName, entityId)) { - settings = settings.Where(item => item.IsPublic).ToList(); + settings = settings.Where(item => !item.IsPrivate).ToList(); } } else @@ -61,7 +61,7 @@ namespace Oqtane.Controllers Setting setting = _settings.GetSetting(entityName, id); if (IsAuthorized(setting.EntityName, setting.EntityId, PermissionNames.View)) { - if (FilterPublic(entityName, id) && !setting.IsPublic) + if (FilterPrivate(entityName, id) && setting.IsPrivate) { setting = null; } @@ -199,7 +199,7 @@ namespace Oqtane.Controllers return authorized; } - private bool FilterPublic(string entityName, int entityId) + private bool FilterPrivate(string entityName, int entityId) { bool filter = false; switch (entityName) diff --git a/Oqtane.Server/Controllers/SiteController.cs b/Oqtane.Server/Controllers/SiteController.cs index 1ff066a8..9a50b91f 100644 --- a/Oqtane.Server/Controllers/SiteController.cs +++ b/Oqtane.Server/Controllers/SiteController.cs @@ -45,7 +45,7 @@ namespace Oqtane.Controllers if (site.SiteId == _alias.SiteId) { site.Settings = _settings.GetSettings(EntityNames.Site, site.SiteId) - .Where(item => item.IsPublic || User.IsInRole(RoleNames.Admin)) + .Where(item => !item.IsPrivate || User.IsInRole(RoleNames.Admin)) .ToDictionary(setting => setting.SettingName, setting => setting.SettingValue); return site; } diff --git a/Oqtane.Server/Migrations/Tenant/03000202_UpdateSettingIsPrivate.cs b/Oqtane.Server/Migrations/Tenant/03000202_UpdateSettingIsPrivate.cs new file mode 100644 index 00000000..1d4f25c0 --- /dev/null +++ b/Oqtane.Server/Migrations/Tenant/03000202_UpdateSettingIsPrivate.cs @@ -0,0 +1,32 @@ +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Oqtane.Databases.Interfaces; +using Oqtane.Migrations.EntityBuilders; +using Oqtane.Repository; +using Oqtane.Shared; + +namespace Oqtane.Migrations.Tenant +{ + [DbContext(typeof(TenantDBContext))] + [Migration("Tenant.03.00.02.02")] + public class UpdateSettingIsPrivate : MultiDatabaseMigration + { + public UpdateSettingIsPrivate(IDatabase database) : base(database) + { + } + + protected override void Up(MigrationBuilder migrationBuilder) + { + var settingEntityBuilder = new SettingEntityBuilder(migrationBuilder, ActiveDatabase); + settingEntityBuilder.AddBooleanColumn("IsPrivate", true); + settingEntityBuilder.UpdateColumn("IsPrivate", "0", "bool", ""); + settingEntityBuilder.UpdateColumn("IsPrivate", "1", "bool", "EntityName = 'Site' AND SettingName LIKE 'SMTP%'"); + settingEntityBuilder.DropColumn("IsPublic"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + // not implemented + } + } +} diff --git a/Oqtane.Shared/Models/Setting.cs b/Oqtane.Shared/Models/Setting.cs index 37d72dbe..4b3c66b0 100644 --- a/Oqtane.Shared/Models/Setting.cs +++ b/Oqtane.Shared/Models/Setting.cs @@ -33,9 +33,9 @@ namespace Oqtane.Models public string SettingValue { get; set; } /// - /// Indicates if this setting is publicly available - only applicable to Site Settings as other entities have more granular permissions + /// Indicates if this setting is private - indicating it should be maintained on the server and not sent to the client /// - public bool IsPublic { get; set; } + public bool IsPrivate { get; set; } #region IAuditable Properties diff --git a/Oqtane.Shared/Shared/Utilities.cs b/Oqtane.Shared/Shared/Utilities.cs index b1313a7a..89b33341 100644 --- a/Oqtane.Shared/Shared/Utilities.cs +++ b/Oqtane.Shared/Shared/Utilities.cs @@ -1,7 +1,6 @@ using Oqtane.Models; using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; using System.Globalization; using System.IO; using System.Linq; @@ -107,7 +106,7 @@ namespace Oqtane.Shared public static string ContentUrl(Alias alias, int fileId, bool asAttachment) { var aliasUrl = (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path : ""; - var method = asAttachment ? "/attach":""; + var method = asAttachment ? "/attach" : ""; return $"{aliasUrl}{Constants.ContentUrl}{fileId}{method}"; } @@ -128,7 +127,7 @@ namespace Oqtane.Shared public static string TenantUrl(Alias alias, string url) { - url = (!url.StartsWith("/")) ? "/" + url : url; + url = (!url.StartsWith("/")) ? "/" + url : url; return (alias != null && !string.IsNullOrEmpty(alias.Path)) ? "/" + alias.Path + url : url; }