Exemple #1
0
        /// <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;
            });
        }
Exemple #2
0
        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));
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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());
        }