/// <summary> /// Configures the kastra options. /// </summary> /// <param name="services">Services.</param> public static async Task ConfigureKastraOptions(this IServiceCollection services) { // Get site configuration using ServiceProvider serviceProvider = services.BuildServiceProvider(); IParameterManager parameterManager = serviceProvider.GetService <IParameterManager>(); SiteConfigurationInfo siteConfiguration = await parameterManager.GetSiteConfigurationAsync(); // Set configuration in identity options services.Configure <IdentityOptions>(options => { options.SignIn.RequireConfirmedEmail = siteConfiguration.RequireConfirmedEmail; options.User.RequireUniqueEmail = siteConfiguration.UserRequireUniqueEmail; options.User.AllowedUserNameCharacters = siteConfiguration.UserAllowedUserNameCharacters; options.Password.RequireDigit = siteConfiguration.PasswordRequireDigit; options.Password.RequiredLength = siteConfiguration.PasswordRequiredLength; options.Password.RequireLowercase = siteConfiguration.PasswordRequireLowercase; options.Password.RequireNonAlphanumeric = siteConfiguration.PasswordRequireNonAlphanumeric; options.Password.RequireUppercase = siteConfiguration.PasswordRequireUppercase; options.Password.RequiredUniqueChars = siteConfiguration.PasswordRequiredUniqueChars; }); // Set cookie configuration services.Configure <CookiePolicyOptions>(options => { options.CheckConsentNeeded = context => siteConfiguration.CheckConsentNeeded; options.MinimumSameSitePolicy = SameSiteMode.None; }); }
public IActionResult Get() { SiteConfigurationModel model = null; SiteConfigurationInfo configuration = _parameterManager.GetSiteConfiguration(); if (configuration == null) { return(NotFound()); } // Get themes list DirectoryInfo themeDirectory = new DirectoryInfo(Path.Combine(_hostingEnvironment.WebRootPath, "themes")); DirectoryInfo[] themes = themeDirectory.GetDirectories("*", SearchOption.TopDirectoryOnly); model = new SiteConfigurationModel(); model.Title = configuration.Title; model.Description = configuration.Description; model.HostUrl = configuration.HostUrl; model.CacheActivated = configuration.CacheActivated; model.SmtpHost = configuration.SmtpHost; model.SmtpPort = configuration.SmtpPort.ToString(); model.SmtpCredentialsUser = configuration.SmtpCredentialsUser; model.SmtpCredentialsPassword = configuration.SmtpCredentialsPassword; model.SmtpEnableSsl = configuration.SmtpEnableSsl; model.EmailSender = configuration.EmailSender; model.RequireConfirmedEmail = configuration.RequireConfirmedEmail; model.Theme = configuration.Theme; model.ThemeList = themes?.Select(t => t.Name)?.OrderBy(t => t)?.ToArray() ?? new string[] { SiteConfiguration.DefaultTheme }; model.CookieUsePolicyUrl = configuration.CookieUsePolicyUrl; model.ConsentNotice = configuration.ConsentNotice; model.CheckConsentNeeded = configuration.CheckConsentNeeded; return(Json(model)); }
public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context); IParameterManager parameterManager = context.HttpContext.RequestServices.GetService(typeof(IParameterManager)) as IParameterManager; SiteConfigurationInfo siteConfiguration = parameterManager.GetSiteConfiguration(); Controller controller = context.Controller as Controller; if (controller != null) { controller.ViewBag.Title = siteConfiguration.Title; controller.ViewBag.Theme = siteConfiguration.Theme; controller.ViewBag.ConsentNotice = siteConfiguration.ConsentNotice; controller.ViewBag.CookieUsePolicyUrl = siteConfiguration.CookieUsePolicyUrl; } }
public async Task <IActionResult> Index(string pageKeyName, int moduleId, string moduleControl, string moduleAction) { if (string.IsNullOrEmpty(pageKeyName)) { return(RedirectToAction("Index", "Home")); } PageInfo page = await _viewManager.GetPageByKeyAsync(pageKeyName, true); if (page is null) { return(NotFound()); } TemplateInfo template = page.PageTemplate; //Get site parameters SiteConfigurationInfo siteConfiguration = await _parameterManager.GetSiteConfigurationAsync(); // Set page title ViewBag.Title = string.IsNullOrEmpty(page.Title) ? siteConfiguration.Title : page.Title; // Set theme ViewBag.Theme = siteConfiguration.Theme ?? SiteConfiguration.DefaultTheme; // Set page SEO ViewBag.MetaDescription = string.IsNullOrEmpty(page.MetaDescription) ? siteConfiguration.Description : page.MetaDescription; ViewBag.MetaKeywords = page.MetaKeywords; ViewBag.MetaRobot = page.MetaRobot; ViewEngine viewEngine = new ViewEngine(page, _cacheEngine); // Create template model object model = viewEngine.CreateView(moduleControl, moduleId, moduleAction); // Home page style if (pageKeyName.ToLower() == "home") { ViewBag.IsHome = true; } return(View(template.KeyName, model)); }
public EmailSender(IParameterManager parameterManager) { // Get site configuration _siteConfiguration = parameterManager.GetSiteConfigurationAsync().Result; // Set smtp client _smtpClient = new SmtpClient { Host = !String.IsNullOrEmpty(_siteConfiguration.SmtpHost) ? _siteConfiguration.SmtpHost : "localhost", Port = _siteConfiguration.SmtpPort > 0 ? _siteConfiguration.SmtpPort : 587, EnableSsl = _siteConfiguration.SmtpEnableSsl }; if (!String.IsNullOrEmpty(_siteConfiguration.SmtpCredentialsUser)) { _smtpClient.Credentials = new NetworkCredential(_siteConfiguration.SmtpCredentialsUser, _siteConfiguration.SmtpCredentialsPassword); } }
public IActionResult Update([FromBody] SiteConfigurationModel model) { SiteConfigurationInfo conf = new SiteConfigurationInfo(); conf.Title = model.Title; conf.Description = model.Description; conf.HostUrl = model.HostUrl; conf.CacheActivated = model.CacheActivated; conf.SmtpHost = model.SmtpHost; conf.SmtpPort = int.Parse(model.SmtpPort); conf.SmtpCredentialsUser = model.SmtpCredentialsUser; conf.SmtpCredentialsPassword = model.SmtpCredentialsPassword; conf.SmtpEnableSsl = model.SmtpEnableSsl; conf.EmailSender = model.EmailSender; conf.RequireConfirmedEmail = model.RequireConfirmedEmail; conf.Theme = model.Theme; conf.CookieUsePolicyUrl = model.CookieUsePolicyUrl; conf.ConsentNotice = model.ConsentNotice; conf.CheckConsentNeeded = model.CheckConsentNeeded; // Cache if (model.CacheActivated) { _cacheEngine.EnableCache(); _cacheEngine.ClearSiteConfig(); } else { _cacheEngine.DisableCache(); } _parameterManager.SaveSiteConfiguration(conf); _cacheEngine.ClearAllCache(); return(Ok()); }