コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: Startup.cs プロジェクト: mixcore/mix.core
        // 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;
                });
            }
        }