コード例 #1
0
        public async Task <RepositoryResponse <bool> > InitLanguages([FromBody] List <MixLanguage> model)
        {
            if (model != null)
            {
                var result = new RepositoryResponse <bool>();
                if (MixService.GetConfig <int>("InitStatus") == 3)
                {
                    string         culture = MixService.GetConfig <string>("DefaultCulture");
                    InitCmsService sv      = new InitCmsService();
                    result = await sv.InitLanguagesAsync(culture, model);

                    if (result.IsSucceed)
                    {
                        MixService.LoadFromDatabase();
                        MixService.SetConfig("InitStatus", 4);
                        MixService.SetConfig("IsInit", true);
                        MixService.SaveSettings();
                        _ = Services.CacheService.RemoveCacheAsync();
                        MixService.Reload();
                    }
                }
                return(result);
            }
            return(new RepositoryResponse <bool>());
        }
コード例 #2
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.SaveSettings();
            var result = await InitCmsService.InitCms(model.SiteName, model.Culture);

            if (result.IsSucceed)
            {
                await InitRolesAsync();

                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);
        }
コード例 #3
0
        private async Task <RepositoryResponse <bool> > InitCmsAsync(InitCmsViewModel model)
        {
            var result = new RepositoryResponse <bool>();

            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_IS_MYSQL, model.IsMysql);
            MixService.SetConfig(MixConstants.CONST_SETTING_DATABASE_PROVIDER, model.DatabaseProvider);
            MixService.SetConfig(MixConstants.CONST_SETTING_LANGUAGE, model.Culture.Specificulture);

            InitCmsService sv         = new InitCmsService();
            var            initResult = await sv.InitCms(model.SiteName, model.Culture);

            if (initResult.IsSucceed)
            {
                await InitRolesAsync();

                result.IsSucceed = true;
                MixService.LoadFromDatabase();
                MixService.SetConfig <bool>("IsInit", true);
                MixService.SetConfig <string>("DefaultCulture", model.Culture.Specificulture);
                MixService.SaveSettings();
                MixService.Reload();
            }
            else
            {
                // if cannot init cms
                //  => reload from default settings
                //  => save to appSettings
                MixService.Reload();
                MixService.SaveSettings();
                if (initResult.Exception != null)
                {
                    result.Errors.Add(initResult.Exception.Message);
                    result.Exception = initResult.Exception;
                }
                foreach (var item in initResult.Errors)
                {
                    result.Errors.Add(item);
                }
            }
            return(result);
        }
コード例 #4
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;
                });
            }
        }
コード例 #5
0
        private async Task <RepositoryResponse <bool> > InitCmsAsync(InitCmsViewModel model)
        {
            var result = new RepositoryResponse <bool>();

            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_IS_SQLITE, model.IsSqlite);
            MixService.SetConfig(MixConstants.CONST_SETTING_LANGUAGE, model.Culture.Specificulture);

            InitCmsService sv         = new InitCmsService();
            var            initResult = await sv.InitCms(model.Culture);

            if (initResult.IsSucceed)
            {
                await InitRolesAsync();

                result.IsSucceed = true;
                MixService.LoadFromDatabase();
                MixService.SetConfig <bool>("IsInit", true);
                MixService.SetConfig <string>("DefaultCulture", model.Culture.Specificulture);
                MixService.Save();
                MixService.Reload();
            }
            else
            {
                MixService.Reload();
                if (initResult.Exception != null)
                {
                    result.Errors.Add(initResult.Exception.Message);
                    result.Exception = initResult.Exception;
                }
                foreach (var item in initResult.Errors)
                {
                    result.Errors.Add(item);
                }
            }
            return(result);
        }