private async Task <RepositoryResponse <bool> > InitStep1Async(InitCmsViewModel model) { MixService.SetConnectionString(MixConstants.CONST_CMS_CONNECTION, model.ConnectionString); MixService.SetConnectionString(MixConstants.CONST_MESSENGER_CONNECTION, model.ConnectionString); MixService.SetConnectionString(MixConstants.CONST_ACCOUNT_CONNECTION, model.ConnectionString); MixService.SetConfig(MixConstants.CONST_SETTING_DATABASE_PROVIDER, model.DatabaseProvider.ToString()); MixService.SetConfig(MixConstants.CONST_SETTING_LANGUAGE, model.Culture.Specificulture); MixService.SetMixConfig <string>(WebConfiguration.MixCacheConnectionString, model.ConnectionString); MixService.SetMixConfig <string>(WebConfiguration.MixCacheDbProvider, model.DatabaseProvider.ToString()); MixService.SaveSettings(); MixService.Reload(); var result = await InitCmsService.InitCms(model.SiteName, model.Culture); if (result.IsSucceed) { await InitCmsService.InitRolesAsync(_roleManager); result.IsSucceed = true; MixService.LoadFromDatabase(); MixService.SetConfig <string>("DefaultCulture", model.Culture.Specificulture); MixService.SetConfig("InitStatus", 1); MixService.SaveSettings(); //MixService.Reload(); } else { // if cannot init cms // => reload from default settings // => save to appSettings MixService.Reload(); MixService.SaveSettings(); } return(result); }
// Mix: Check custom cms config private void VerifyInitData(IServiceCollection services) { // Mix: Migrate db if already inited if (!MixService.GetAppSetting <bool>(MixAppSettingKeywords.IsInit)) { using (var ctx = MixService.GetDbContext()) { ctx.Database.Migrate(); var transaction = ctx.Database.BeginTransaction(); var sysDatabasesFile = MixFileRepository.Instance.GetFile("sys_databases", MixFileExtensions.Json, $"{MixFolders.DataFolder}"); var sysDatabases = JObject.Parse(sysDatabasesFile.Content)["data"].ToObject <List <Lib.ViewModels.MixDatabases.ImportViewModel> >(); foreach (var db in sysDatabases) { if (!ctx.MixDatabase.Any(m => m.Name == db.Name)) { db.Id = 0; db.SaveModel(true, ctx, transaction); } } transaction.Commit(); transaction.Dispose(); } using (var cacheCtx = MixCacheService.GetCacheDbContext()) { cacheCtx.Database.Migrate(); } var serviceProvider = services.BuildServiceProvider(); var _roleManager = serviceProvider.GetService <RoleManager <IdentityRole> >(); InitCmsService.InitRolesAsync(_roleManager).GetAwaiter(); } // Mix: Check if require ssl if (MixService.GetAppSetting <bool>("IsHttps")) { services.AddHttpsRedirection(options => { options.RedirectStatusCode = StatusCodes.Status308PermanentRedirect; options.HttpsPort = 443; }); } }