// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { _services = services; _services.AddLogging(loggingBuilder => loggingBuilder.AddSerilog(dispose: true)); _services.AddOptions(); //services.AddSingleton(typeof(IStringLocalizerFactory), typeof(ClassLibraryStringLocalizerFactory)); services.AddSingleton(typeof(IStringLocalizer), typeof(NccStringLocalizer <SharedResource>)); _services.AddLocalization(); _mvcBuilder = services.AddMvc(); _mvcBuilder.AddViewLocalization(LanguageViewLocationExpanderFormat.Suffix); _mvcBuilder.AddDataAnnotationsLocalization(options => { options.DataAnnotationLocalizerProvider = (type, factory) => new NccStringLocalizer <SharedResource>(factory, new HttpContextAccessor()); }); _services.AddResponseCaching(); _services.AddSession(); _services.AddDistributedMemoryCache(); _services.AddResponseCompression(); _services.AddSingleton(Configuration); _services.AddNccCoreModuleRepositoryAndServices(); _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment); _themeManager = new ThemeManager(); var themeFolder = Path.Combine(_hostingEnvironment.ContentRootPath, NccInfo.ThemeFolder); GlobalConfig.Themes = _themeManager.ScanThemeDirectory(themeFolder); var themesDirectoryContents = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ThemeFolder); _themeManager.RegisterThemes(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents); var moduleFolder = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ModuleFolder); var coreModuleFolder = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.CoreModuleFolder); var coreModules = _moduleManager.LoadModules(coreModuleFolder); var userModules = _moduleManager.LoadModules(moduleFolder); GlobalConfig.Modules.AddRange(userModules); _services.AddMaintenance(() => _setupConfig.IsMaintenanceMode, Encoding.UTF8.GetBytes("<div style='width:100%;text-align:center; padding-top:10px;'><h1>" + _setupConfig.MaintenanceMessage + "</h1></div>"), "text/html", _setupConfig.MaintenanceDownTime * 60); if (SetupHelper.IsDbCreateComplete) { if (SetupHelper.SelectedDatabase == "SqLite") { _services.AddDbContext <NccDbContext>(options => options.UseSqlite(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework")) ); } else if (SetupHelper.SelectedDatabase == "MSSQL") { _services.AddDbContext <NccDbContext>(options => options.UseSqlServer(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework")) ); } else if (SetupHelper.SelectedDatabase == "MySql") { _services.AddDbContext <NccDbContext>(options => options.UseMySql(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework")) ); } _services.AddCustomizedIdentity(); _startup.RegisterDatabase(_services); _services.AddAuthorization(options => { options.AddPolicy("SuperAdmin", policy => policy.Requirements.Add(new AuthRequire("SuperAdmin", ""))); options.AddPolicy("Administrator", policy => policy.Requirements.Add(new AuthRequire("Administrator", ""))); options.AddPolicy("Editor", policy => policy.Requirements.Add(new AuthRequire("Editor", ""))); options.AddPolicy("Author", policy => policy.Requirements.Add(new AuthRequire("Author", ""))); options.AddPolicy("Contributor", policy => policy.Requirements.Add(new AuthRequire("Contributor", ""))); options.AddPolicy("Subscriber", policy => policy.Requirements.Add(new AuthRequire("Subscriber", ""))); }); _services.AddSingleton <IAuthorizationHandler, AuthRequireHandler>(); _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment); GlobalConfig.Modules = _moduleManager.RegisterModules(_mvcBuilder, _services, _serviceProvider); _moduleManager.RegisterModuleRepositoryAndServices(_mvcBuilder, _services, _serviceProvider); _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment); GlobalConfig.Widgets = _moduleManager.RegisterModuleWidgets(_mvcBuilder, _services, _serviceProvider); var themeWidgets = _themeManager.RegisterThemeWidgets(_mvcBuilder, _services, _serviceProvider, themesDirectoryContents); if (themeWidgets != null && themeWidgets.Count > 0) { GlobalConfig.Widgets.AddRange(themeWidgets); } _nccShortCodeProvider = _serviceProvider.GetService <NccShortCodeProvider>(); GlobalConfig.ShortCodes = _nccShortCodeProvider.ScanAndRegisterShortCodes(GlobalConfig.Modules); } var defaultCulture = new RequestCulture("en"); if (SetupHelper.IsAdminCreateComplete) { GlobalConfig.SetupConfig = SetupHelper.LoadSetup(); defaultCulture = new RequestCulture(GlobalConfig.SetupConfig.Language); } services.Configure <RouteOptions>(options => { options.ConstraintMap.Add("lang", typeof(LanguageRouteConstraint)); }); _services.Configure <RequestLocalizationOptions>( opts => { var supportedCultures = SupportedCultures.Cultures; opts.DefaultRequestCulture = defaultCulture; opts.SupportedCultures = supportedCultures; opts.SupportedUICultures = supportedCultures; var provider = new RouteDataRequestCultureProvider(); provider.RouteDataStringKey = "lang"; provider.UIRouteDataStringKey = "lang"; provider.Options = opts; opts.RequestCultureProviders = new[] { provider }; } ); services.Configure <ClassLibraryLocalizationOptions>( options => options.ResourcePaths = new Dictionary <string, string> { { "NetCoreCMS.Framework", "i18n/Resources" }, { "NetCoreCMS.Web", "Resources" } } ); _serviceProvider = _services.Build(ConfigurationRoot, _hostingEnvironment); GlobalConfig.ServiceProvider = _serviceProvider; GlobalConfig.Services = _services; }
// This method gets called by the runtime. Use this method to add services to the container. public IServiceProvider ConfigureServices(IServiceCollection services) { _mvcBuilder = services.AddMvc(); _services = services; _services.AddSession(); _services.AddDistributedMemoryCache(); _services.AddTransient <IEmailSender, AuthMessageSender>(); _services.AddTransient <ISmsSender, AuthMessageSender>(); _services.TryAddSingleton <IHttpContextAccessor, HttpContextAccessor>(); _services.TryAddSingleton <IActionContextAccessor, ActionContextAccessor>(); _services.AddScoped <SignInManager <NccUser>, NccSignInManager <NccUser> >(); _services.AddScoped <IViewRenderService, NccRazorViewRenderService>(); _services.AddTransient <NccSettingsRepository>(); _services.AddTransient <NccSettingsService>(); _services.AddTransient <NccModuleRepository>(); _services.AddTransient <NccModuleService>(); _services.AddSingleton <IConfiguration>(Configuration); _services.AddSingleton <IConfigurationRoot>(Configuration); var themesFolder = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ThemeFolder); ThemeManager.RegisterThemes(_mvcBuilder, _services, themesFolder); var moduleFolder = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.ModuleFolder); var coreModuleFolder = _hostingEnvironment.ContentRootFileProvider.GetDirectoryContents(NccInfo.CoreModuleFolder); var coreModules = _moduleManager.LoadModules(coreModuleFolder); var userModules = _moduleManager.LoadModules(moduleFolder); GlobalConfig.Modules.AddRange(userModules); if (SetupHelper.IsDbCreateComplete) { if (SetupHelper.SelectedDatabase == "SqLite") { _services.AddDbContext <NccDbContext>(options => options.UseSqlite(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework")) ); } else if (SetupHelper.SelectedDatabase == "MSSQL") { _services.AddDbContext <NccDbContext>(options => options.UseSqlServer(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework")) ); } else if (SetupHelper.SelectedDatabase == "MySql") { _services.AddDbContext <NccDbContext>(options => options.UseMySql(SetupHelper.ConnectionString, opt => opt.MigrationsAssembly("NetCoreCMS.Framework")) ); } _services.AddCustomizedIdentity(); // Add application services. _startup.RegisterDatabase(_services); _services.AddAuthorization(options => { options.AddPolicy("SuperAdmin", policy => policy.Requirements.Add(new AuthRequire("SuperAdmin", ""))); options.AddPolicy("Administrator", policy => policy.Requirements.Add(new AuthRequire("Administrator", ""))); options.AddPolicy("Author", policy => policy.Requirements.Add(new AuthRequire("Author", ""))); options.AddPolicy("Editor", policy => policy.Requirements.Add(new AuthRequire("Editor", ""))); options.AddPolicy("Subscriber", policy => policy.Requirements.Add(new AuthRequire("Subscriber", ""))); }); _services.AddSingleton <IAuthorizationHandler, AuthRequireHandler>(); _serviceProvider = _services.Build(Configuration, _hostingEnvironment); GlobalConfig.Modules = _moduleManager.RegisterModules(_mvcBuilder, _services, _serviceProvider); _serviceProvider = _services.Build(Configuration, _hostingEnvironment); GlobalConfig.Widgets = _moduleManager.RegisterModuleWidgets(_mvcBuilder, _services, _serviceProvider); } _serviceProvider = _services.Build(Configuration, _hostingEnvironment); GlobalConfig.Services = _services; return(_serviceProvider); }