diff --git a/source/DasBlog.Services/Interfaces/IDasBlogSettings.cs b/source/DasBlog.Services/Interfaces/IDasBlogSettings.cs index 590aabe81..71c866600 100644 --- a/source/DasBlog.Services/Interfaces/IDasBlogSettings.cs +++ b/source/DasBlog.Services/Interfaces/IDasBlogSettings.cs @@ -9,11 +9,11 @@ namespace DasBlog.Services { public interface IDasBlogSettings : IUrlResolver, ITimeZoneService, IContentProcessor, IMailProvider, IUserManager { - ISiteConfig SiteConfiguration { get; set; } - IMetaTags MetaTags { get; set; } + ISiteConfig SiteConfiguration { get; } + IMetaTags MetaTags { get; } ISiteSecurityConfig SecurityConfiguration { get; } - IOEmbedProviders OEmbedProviders { get; set; } + IOEmbedProviders OEmbedProviders { get; } string WebRootDirectory { get; } } diff --git a/source/DasBlog.Web/Controllers/AdminController.cs b/source/DasBlog.Web/Controllers/AdminController.cs index 84e718092..b98ad47c6 100644 --- a/source/DasBlog.Web/Controllers/AdminController.cs +++ b/source/DasBlog.Web/Controllers/AdminController.cs @@ -89,7 +89,6 @@ public IActionResult Settings(DasBlogSettingsViewModel settings) settings.Posts = posts; return View("Settings", settings); } - dasBlogSettings.SiteConfiguration = site; if (!fileSystemBinaryManager.SaveMetaConfig(meta)) { @@ -98,7 +97,6 @@ public IActionResult Settings(DasBlogSettingsViewModel settings) settings.Posts = posts; return View("Settings", settings); } - dasBlogSettings.MetaTags = meta; logger.LogInformation(new EventDataItem(EventCodes.Site, null, "Site settings updated")); diff --git a/source/DasBlog.Web/DasBlogServiceCollectionExtensions.cs b/source/DasBlog.Web/DasBlogServiceCollectionExtensions.cs index c119c8465..ccdbea278 100644 --- a/source/DasBlog.Web/DasBlogServiceCollectionExtensions.cs +++ b/source/DasBlog.Web/DasBlogServiceCollectionExtensions.cs @@ -1,4 +1,4 @@ -using DasBlog.Managers; +using DasBlog.Managers; using DasBlog.Managers.Interfaces; using DasBlog.Services; using DasBlog.Services.ActivityLogs; @@ -63,6 +63,7 @@ public static IServiceCollection AddDasBlogManagers(this IServiceCollection serv public static IServiceCollection AddDasBlogServices(this IServiceCollection services, IWebHostEnvironment env) { services + .AddSingleton() .AddSingleton(env.ContentRootFileProvider) .AddSingleton() .AddSingleton() @@ -78,8 +79,7 @@ public static IServiceCollection AddDasBlogServices(this IServiceCollection serv .AddSingleton, SiteSecurityConfigFileService>() .AddSingleton(); - services - .AddTransient() + services .AddTransient, DasBlogUserStore>() .AddTransient, DasBlogUserRoleStore>() .AddTransient(provider => provider.GetService().HttpContext.User) diff --git a/source/DasBlog.Web/Settings/DasBlogSettings.cs b/source/DasBlog.Web/Settings/DasBlogSettings.cs index e211c63bc..65107ea52 100644 --- a/source/DasBlog.Web/Settings/DasBlogSettings.cs +++ b/source/DasBlog.Web/Settings/DasBlogSettings.cs @@ -24,54 +24,48 @@ public class DasBlogSettings : IDasBlogSettings { private readonly string siteSecurityConfigFilePath; private readonly ConfigFilePathsDataOption filePathDataOptions; - + private readonly IOptionsMonitor siteConfigMonitor; + private readonly IOptionsMonitor metaTagsMonitor; + private readonly IOptionsMonitor embedProvidersMonitor; + public DasBlogSettings(IWebHostEnvironment env, IOptionsMonitor siteConfig, IOptionsMonitor metaTagsConfig, - IOptionsMonitor embedProvidersConfig, + IOptionsMonitor embedProvidersConfig, ISiteSecurityConfig siteSecurityConfig, IOptions optionsAccessor) { WebRootDirectory = env.ContentRootPath; - SiteConfiguration = siteConfig.CurrentValue; - OEmbedProviders = embedProvidersConfig.CurrentValue; + siteConfigMonitor = siteConfig; + metaTagsMonitor = metaTagsConfig; + embedProvidersMonitor = embedProvidersConfig; SecurityConfiguration = siteSecurityConfig; - MetaTags = metaTagsConfig.CurrentValue; filePathDataOptions = optionsAccessor.Value; - RssUrl = RelativeToRoot("feed/rss"); - PingBackUrl = RelativeToRoot("feed/pingback"); - CategoryUrl = RelativeToRoot("category"); - ArchiveUrl = RelativeToRoot("archive"); - MicroSummaryUrl = RelativeToRoot("site/microsummary"); - RsdUrl = RelativeToRoot("feed/rsd"); - ShortCutIconUrl = RelativeToRoot(string.Format("theme/{0}/favicon.ico", SiteConfiguration.Theme)); - ThemeCssUrl = RelativeToRoot(string.Format("theme/{0}/custom.css", SiteConfiguration.Theme)); - siteSecurityConfigFilePath = filePathDataOptions.SecurityConfigFilePath; } public string WebRootDirectory { get; } - public string PingBackUrl { get; } + public string PingBackUrl => RelativeToRoot("feed/pingback"); + + public string RssUrl => RelativeToRoot("feed/rss"); - public string RssUrl { get; } + public string CategoryUrl => RelativeToRoot("category"); - public string CategoryUrl { get; } + public string ArchiveUrl => RelativeToRoot("archive"); - public string ArchiveUrl { get; } + public string MicroSummaryUrl => RelativeToRoot("site/microsummary"); - public string MicroSummaryUrl { get; } + public string RsdUrl => RelativeToRoot("feed/rsd"); - public string RsdUrl { get; } + public string ShortCutIconUrl => RelativeToRoot(string.Format("theme/{0}/favicon.ico", SiteConfiguration.Theme)); - public string ShortCutIconUrl { get; } + public string ThemeCssUrl => RelativeToRoot(string.Format("theme/{0}/custom.css", SiteConfiguration.Theme)); - public string ThemeCssUrl { get; } - - public IMetaTags MetaTags { get; set; } + public IMetaTags MetaTags => metaTagsMonitor.CurrentValue; - public ISiteConfig SiteConfiguration { get; set; } + public ISiteConfig SiteConfiguration => siteConfigMonitor.CurrentValue; public ISiteSecurityConfig SecurityConfiguration { get; } - public IOEmbedProviders OEmbedProviders { get; set; } + public IOEmbedProviders OEmbedProviders => embedProvidersMonitor.CurrentValue; private static Regex htmlFilterRegex = new Regex("<(?/)?(?\\w+)((\\s+(?(?\\w+)(\\s*=\\s*(?:\"(?[^\"]*)\"|'(?[^']*)'|(?[^'\">\\s]+)))?))+\\s*|\\s*)(?/)?>", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase | RegexOptions.Multiline | RegexOptions.Compiled);