private async Task SetCacheItemsAsync( string providerName, string providerKey, string currentName, SettingCacheItem currentCacheItem) { var settingDefinitions = SettingDefinitionManager.GetAll(); var settingsDictionary = (await SettingRepository.GetListAsync(providerName, providerKey)) .ToDictionary(s => s.Name, s => s.Value); var cacheItems = new List <KeyValuePair <string, SettingCacheItem> >(); foreach (var settingDefinition in settingDefinitions) { var settingValue = settingsDictionary.GetOrDefault(settingDefinition.Name); cacheItems.Add( new KeyValuePair <string, SettingCacheItem>( CalculateCacheKey(settingDefinition.Name, providerName, providerKey), new SettingCacheItem(settingValue) ) ); if (settingDefinition.Name == currentName) { currentCacheItem.Value = settingValue; } } await Cache.SetManyAsync(cacheItems, considerUow : true); }
protected virtual ListResultDto <SettingDto> GetAllSetting( List <SettingValue> settings) { var settingsDto = new List <SettingDto>(); foreach (var setting in settings) { var settingDefinition = SettingDefinitionManager.Get(setting.Name); if (!settingDefinition.IsVisibleToClients) { continue; } var settingInfo = new SettingDto { Name = setting.Name, Value = setting.Value, DefaultValue = settingDefinition.DefaultValue, Description = settingDefinition.Description.Localize(StringLocalizerFactory), DisplayName = settingDefinition.DisplayName.Localize(StringLocalizerFactory) }; settingsDto.Add(settingInfo); } return(new ListResultDto <SettingDto>(settingsDto)); }
protected virtual async Task <CodeZeroUserSettingConfigDto> GetUserSettingConfig() { var config = new CodeZeroUserSettingConfigDto { Values = new Dictionary <string, string>() }; var settingDefinitions = SettingDefinitionManager .GetAllSettingDefinitions(); using (var scope = _iocResolver.CreateScope()) { foreach (var settingDefinition in settingDefinitions) { if (!await settingDefinition.ClientVisibilityProvider.CheckVisible(scope)) { continue; } var settingValue = await SettingManager.GetSettingValueAsync(settingDefinition.Name); config.Values.Add(settingDefinition.Name, settingValue); } } return(config); }
private async Task <List <KeyValuePair <string, SettingCacheItem> > > SetCacheItemsAsync( string providerName, string providerKey, List <string> notCacheKeys) { var settingDefinitions = SettingDefinitionManager.GetAll().Where(x => notCacheKeys.Any(k => GetSettingNameFormCacheKeyOrNull(k) == x.Name)); var settingsDictionary = (await SettingRepository.GetListAsync(notCacheKeys.Select(GetSettingNameFormCacheKeyOrNull).ToArray(), providerName, providerKey)) .ToDictionary(s => s.Name, s => s.Value); var cacheItems = new List <KeyValuePair <string, SettingCacheItem> >(); foreach (var settingDefinition in settingDefinitions) { var settingValue = settingsDictionary.GetOrDefault(settingDefinition.Name); cacheItems.Add( new KeyValuePair <string, SettingCacheItem>( CalculateCacheKey(settingDefinition.Name, providerName, providerKey), new SettingCacheItem(settingValue) ) ); } await Cache.SetManyAsync(cacheItems, considerUow : true); return(cacheItems); }
protected virtual async Task <AbpUserSettingConfigDto> GetUserSettingConfig() { var config = new AbpUserSettingConfigDto { Values = new Dictionary <string, string>() }; var settings = await SettingManager.GetAllSettingValuesAsync(SettingScopes.All); using (var scope = _iocResolver.CreateScope()) { foreach (var settingValue in settings) { if (!await SettingDefinitionManager.GetSettingDefinition(settingValue.Name).ClientVisibilityProvider .CheckVisible(scope)) { continue; } config.Values.Add(settingValue.Name, settingValue.Value); } } return(config); }
protected virtual async Task <ListResultDto <SettingDto> > GetAllSettingAsync( string providerName, string providerKey) { var settingsDto = new List <SettingDto>(); var settingDefinitions = SettingDefinitionManager.GetAll(); foreach (var setting in settingDefinitions) { if (setting.Providers.Any() && !setting.Providers.Contains(providerName)) { continue; } if (!setting.IsVisibleToClients) { continue; } var settingValue = await SettingManager.GetOrNullAsync(setting.Name, providerName, providerKey); var settingInfo = new SettingDto { Name = setting.Name, Value = settingValue, DefaultValue = setting.DefaultValue, Description = setting.Description.Localize(StringLocalizerFactory), DisplayName = setting.DisplayName.Localize(StringLocalizerFactory) }; settingsDto.Add(settingInfo); } return(new ListResultDto <SettingDto>(settingsDto)); }
public virtual async Task <List <SettingValue> > GetAllAsync() { var settingValues = new List <SettingValue>(); var settingDefinitions = SettingDefinitionManager.GetAll(); foreach (var setting in settingDefinitions) { settingValues.Add(new SettingValue(setting.Name, await GetOrNullAsync(setting.Name))); } return(settingValues); }
public virtual async Task SetAsync(string name, string value, string providerName, string providerKey, bool forceToSet = false) { Check.NotNull(name, nameof(name)); Check.NotNull(providerName, nameof(providerName)); var setting = SettingDefinitionManager.Get(name); var providers = Enumerable .Reverse(Providers) .SkipWhile(p => p.Name != providerName) .ToList(); if (!providers.Any()) { return; } if (setting.IsEncrypted) { value = SettingEncryptionService.Encrypt(setting, value); } if (providers.Count > 1 && !forceToSet && setting.IsInherited && value != null) { var fallbackValue = await GetOrNullInternalAsync(name, providers[1].Name, null).ConfigureAwait(false); if (fallbackValue == value) { //Clear the value if it's same as it's fallback value value = null; } } providers = providers .TakeWhile(p => p.Name == providerName) .ToList(); //Getting list for case of there are more than one provider with same providerName if (value == null) { foreach (var provider in providers) { await provider.ClearAsync(setting, providerKey).ConfigureAwait(false); } } else { foreach (var provider in providers) { await provider.SetAsync(setting, value, providerKey).ConfigureAwait(false); } } }
protected async Task UpdateAsync(UpdateSettingsInput input) { var navigation = SettingDefinitionManager.GetNavigation(input.NavigationName); var settingDefinitions = navigation.SettingDefinitions; var settings = input.CustomizedFields.Where(s => settingDefinitions.Select(sd => sd.Name).Contains(s.Key) ); foreach (var setting in settings) { await UpdateAsync(setting.Key, setting.Value.ToString()); } }
public AbpApplicationConfigurationAppService( IOptions <AbpLocalizationOptions> localizationOptions, IServiceProvider serviceProvider, IAbpAuthorizationPolicyProvider abpAuthorizationPolicyProvider, IAuthorizationService authorizationService, ICurrentUser currentUser, ISettingProvider settingProvider, SettingDefinitionManager settingDefinitionManager) { _serviceProvider = serviceProvider; _abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider; _authorizationService = authorizationService; _currentUser = currentUser; _settingProvider = settingProvider; _settingDefinitionManager = settingDefinitionManager; _localizationOptions = localizationOptions.Value; }
public virtual async Task SetGlobalAsync(UpdateSettingsDto input) { foreach (var setting in input.Settings) { await SettingManager.SetGlobalAsync(setting.Name, setting.Value); var settingDefinition = SettingDefinitionManager.GetOrNull(setting.Name); if (settingDefinition != null) { foreach (var provider in settingDefinition.Providers) { // 同步变更缓存配置 await SetCacheItemAsync(setting.Name, setting.Value, provider, null); } } } await CurrentUnitOfWork.SaveChangesAsync(); }
protected virtual async Task <AbpUserSettingConfigDto> GetUserSettingConfig() { var config = new AbpUserSettingConfigDto { Values = new Dictionary <string, string>() }; var settingDefinitions = SettingDefinitionManager .GetAllSettingDefinitions() .Where(sd => sd.IsVisibleToClients); foreach (var settingDefinition in settingDefinitions) { var settingValue = await SettingManager.GetSettingValueAsync(settingDefinition.Name); config.Values.Add(settingDefinition.Name, settingValue); } return(config); }
public async Task <ListResultDto <SettingNavigationDto> > GetAllAsync() { var navigations = SettingDefinitionManager.GetNavigations(); var settingValues = await GetSettingValues(); var navigationList = new List <SettingNavigationDto>(); foreach (var nav in navigations) { var settingDefinitions = nav.SettingDefinitions.Where(sd => settingValues.Any(sv => sv.Name == sd.Name) && sd.GetFieldControlConfigurationOrNull() != null ).ToList(); if (settingDefinitions.Any()) { var settings = new List <SettingDto>(); foreach (var sd in settingDefinitions) { var group = sd.GetGroupOrNull(); settings.Add(new SettingDto( group == null ? null : group.Localize(StringLocalizerFactory), sd.Name, sd.DisplayName.Localize(StringLocalizerFactory), sd.Description == null?null:sd.Description.Localize(StringLocalizerFactory), settingValues.Single(sv => sv.Name == sd.Name).Value, sd.GetFieldControlProviderNameOrNull(), sd.GetFieldControlConfigurationOrNull() )); } navigationList.Add(new SettingNavigationDto( nav.Name, nav.DisplayName.Localize(StringLocalizerFactory), settings )); } } return (new ListResultDto <SettingNavigationDto>(navigationList)); }
public virtual async Task <string> GetOrNullAsync(string name) { var setting = SettingDefinitionManager.Get(name); var providers = Enumerable .Reverse(SettingValueProviderManager.Providers); if (setting.Providers.Any()) { providers = providers.Where(p => setting.Providers.Contains(p.Name)); } //TODO: How to implement setting.IsInherited? var value = await GetOrNullValueFromProvidersAsync(providers, setting); if (value != null && setting.IsEncrypted) { value = SettingEncryptionService.Decrypt(setting, value); } return(value); }
public virtual async Task <List <SettingValue> > GetAllAsync(string[] names) { var result = new Dictionary <string, SettingValue>(); var settingDefinitions = SettingDefinitionManager.GetAll().Where(x => names.Contains(x.Name)).ToList(); foreach (var definition in settingDefinitions) { result.Add(definition.Name, new SettingValue(definition.Name, null)); } foreach (var provider in Enumerable.Reverse(SettingValueProviderManager.Providers)) { var settingValues = await provider.GetAllAsync(settingDefinitions.Where(x => !x.Providers.Any() || x.Providers.Contains(provider.Name)).ToArray()); var notNullValues = settingValues.Where(x => x.Value != null).ToList(); foreach (var settingValue in notNullValues) { var settingDefinition = settingDefinitions.First(x => x.Name == settingValue.Name); if (settingDefinition.IsEncrypted) { settingValue.Value = SettingEncryptionService.Decrypt(settingDefinition, settingValue.Value); } if (result.ContainsKey(settingValue.Name) && result[settingValue.Name].Value == null) { result[settingValue.Name].Value = settingValue.Value; } } settingDefinitions.RemoveAll(x => notNullValues.Any(v => v.Name == x.Name)); if (!settingDefinitions.Any()) { break; } } return(result.Values.ToList()); }
protected virtual async Task <string> GetOrNullInternalAsync(string name, string providerName, string providerKey, bool fallback = true) { var setting = SettingDefinitionManager.Get(name); var providers = Enumerable .Reverse(Providers); if (providerName != null) { providers = providers.SkipWhile(c => c.Name != providerName); } if (!fallback || !setting.IsInherited) { providers = providers.TakeWhile(c => c.Name == providerName); } string value = null; foreach (var provider in providers) { value = await provider.GetOrNullAsync( setting, provider.Name == providerName?providerKey : null ).ConfigureAwait(false); if (value != null) { break; } } if (setting.IsEncrypted) { value = SettingEncryptionService.Decrypt(setting, value); } return(value); }
public async Task <SettingModelInfo> ToModelInfo() { var modelBasicInfo = ToModelBasicInfo(); var modelInfo = new SettingModelInfo { TypeFullName = modelBasicInfo.TypeFullName, ProviderName = modelBasicInfo.ProviderName, DisplayName = modelBasicInfo.DisplayName, Description = modelBasicInfo.Description }; foreach (var prop in ModelProperties) { var settingDefinition = prop.GetSingleAttributeOrNull <SettingDefinitionAttribute>(); var customName = settingDefinition?.CustomName; var inputType = string.Empty; if (settingDefinition == null || settingDefinition.InputType == FrontEndInputType.None) { inputType = prop.PropertyType.ToFrontEndInputType(); } else { inputType = settingDefinition.InputType.ToString(); } var sdManager = SettingDefinitionManager.GetOrNull(GetSettingName(prop.Name)); var modelProperty = new SettingModelProperty(); modelProperty.Name = prop.Name; modelProperty.Value = await GetSettingValueAsync(prop.Name); modelProperty.InputType = inputType; modelProperty.DisplayName = sdManager?.DisplayName; modelProperty.Description = sdManager?.Description; modelInfo.Properties.Add(modelProperty); } return(modelInfo); }
public ConfigurationAppService(IOptions <AbpLocalizationOptions> localizationOptions, IServiceProvider serviceProvider, IAbpAuthorizationPolicyProvider abpAuthorizationPolicyProvider, IAuthorizationService authorizationService, ICurrentUser currentUser, ISettingProvider settingProvider, SettingDefinitionManager settingDefinitionManager, IFeatureDefinitionManager featureDefinitionManager, ILanguageProvider languageProvider) : base(localizationOptions, serviceProvider, abpAuthorizationPolicyProvider, authorizationService, currentUser, settingProvider, settingDefinitionManager, featureDefinitionManager, languageProvider) { }
public virtual async Task <List <SettingValue> > GetAllAsync(string providerName, string providerKey, bool fallback = true) { Check.NotNull(providerName, nameof(providerName)); var settingDefinitions = SettingDefinitionManager.GetAll(); var providers = Enumerable.Reverse(Providers) .SkipWhile(c => c.Name != providerName); if (!fallback) { providers = providers.TakeWhile(c => c.Name == providerName); } var providerList = providers.Reverse().ToList(); if (!providerList.Any()) { return(new List <SettingValue>()); } var settingValues = new Dictionary <string, SettingValue>(); foreach (var setting in settingDefinitions) { string value = null; if (setting.IsInherited) { foreach (var provider in providerList) { var providerValue = await provider.GetOrNullAsync( setting, provider.Name == providerName?providerKey : null ).ConfigureAwait(false); if (providerValue != null) { value = providerValue; } } } else { value = await providerList[0].GetOrNullAsync( setting, providerKey ).ConfigureAwait(false); } if (setting.IsEncrypted) { value = SettingEncryptionService.Decrypt(setting, value); } if (value != null) { settingValues[setting.Name] = new SettingValue(setting.Name, value); } } return(settingValues.Values.ToList()); }
protected virtual async Task <ListResultDto <SettingGroupDto> > GetAllForProviderAsync(string providerName, string providerKey) { /* * 2020-11-19 * [email protected] * * 之所以重构为这种看似硬编码的设计,是因为硬编码的都是常用的自带的配置 * * 自定义的应用模块可以实现返回相同Dto的配置服务,然后通过路由的聚合功能, * 轻松加入到前端的设置管理(因为vue前端已设计为动态表单页面) * * 最初的设计才是不合理的,前端不能硬编码设置管理界面,这应该是后端的事情 */ var settingGroups = new List <SettingGroupDto>(); #region 系统设置 var sysSettingGroup = new SettingGroupDto(L["DisplayName:System"], L["Description:System"]); // 语言 var languageSetting = sysSettingGroup.AddSetting(L["DisplayName:System.Language"], L["Description:System.Language"]); languageSetting.AddDetail( SettingDefinitionManager.Get(LocalizationSettingNames.DefaultLanguage), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LocalizationSettingNames.DefaultLanguage, providerName, providerKey), ValueType.Option) .AddOptions(LocalizationOptions.Languages.Select(l => new OptionDto(l.DisplayName, l.CultureName))); // 时区 var timingSetting = sysSettingGroup.AddSetting(L["DisplayName:System.Timing"], L["Description:System.Timing"]); timingSetting.AddDetail( SettingDefinitionManager.Get(TimingSettingNames.TimeZone), StringLocalizerFactory, await SettingManager.GetOrNullAsync(TimingSettingNames.TimeZone, providerName, providerKey), ValueType.String); settingGroups.Add(sysSettingGroup); #endregion #region 安全设置 var securitySettingGroup = new SettingGroupDto(L["DisplayName:Security"], L["Description:Security"]); // 用户账户 var accountSetting = securitySettingGroup.AddSetting(L["DisplayName:Security.Account"], L["Description:Security.Account"]); // 启用本地登录 accountSetting.AddDetail( SettingDefinitionManager.Get(AccountSettingNames.EnableLocalLogin), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AccountSettingNames.EnableLocalLogin, providerName, providerKey), ValueType.Boolean); accountSetting.AddDetail( SettingDefinitionManager.Get(AccountSettingNames.IsSelfRegistrationEnabled), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AccountSettingNames.IsSelfRegistrationEnabled, providerName, providerKey), ValueType.Boolean); settingGroups.Add(securitySettingGroup); #endregion #region 身份标识设置 // 身份标识设置 var identitySetting = new SettingGroupDto(L["DisplayName:Identity"], L["Description:Identity"]); #region 用户锁定 var lockoutSetting = identitySetting.AddSetting(L["DisplayName:Identity.Lockout"], L["Description:Identity.Lockout"]); lockoutSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Lockout.AllowedForNewUsers), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Lockout.AllowedForNewUsers, providerName, providerKey), ValueType.Boolean); lockoutSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Lockout.LockoutDuration), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Lockout.LockoutDuration, providerName, providerKey), ValueType.Number); lockoutSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Lockout.MaxFailedAccessAttempts), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Lockout.MaxFailedAccessAttempts, providerName, providerKey), ValueType.Number); #endregion #region 用户 var userSetting = identitySetting.AddSetting(L["DisplayName:Identity.User"], L["Description:Identity.User"]); userSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.User.IsEmailUpdateEnabled), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsEmailUpdateEnabled, providerName, providerKey), ValueType.Boolean); userSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.User.IsUserNameUpdateEnabled), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.User.IsUserNameUpdateEnabled, providerName, providerKey), ValueType.Boolean); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsNewUserRegister), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsNewUserRegister, providerName, providerKey), ValueType.String); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsResetPassword), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsResetPassword, providerName, providerKey), ValueType.String); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsUserSignin), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsUserSignin, providerName, providerKey), ValueType.String); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsPhoneNumberConfirmed), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsPhoneNumberConfirmed, providerName, providerKey), ValueType.String); userSetting.AddDetail( SettingDefinitionManager.Get(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsRepetInterval), StringLocalizerFactory, await SettingManager.GetOrNullAsync(LINGYUN.Abp.Identity.Settings.IdentitySettingNames.User.SmsRepetInterval, providerName, providerKey), ValueType.Number); #endregion #region 登录 var signinSetting = identitySetting.AddSetting(L["DisplayName:Identity.SignIn"], L["Description:Identity.SignIn"]); signinSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.SignIn.EnablePhoneNumberConfirmation), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.EnablePhoneNumberConfirmation, providerName, providerKey), ValueType.Boolean); signinSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.SignIn.RequireConfirmedEmail), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.RequireConfirmedEmail, providerName, providerKey), ValueType.Boolean); signinSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.SignIn.RequireConfirmedPhoneNumber, providerName, providerKey), ValueType.Boolean); #endregion #region 密码 var passwordSetting = identitySetting.AddSetting(L["DisplayName:Identity.Password"], L["Description:Identity.Password"]); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireDigit), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireDigit, providerName, providerKey), ValueType.Boolean); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequiredLength), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequiredLength, providerName, providerKey), ValueType.Number); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequiredUniqueChars), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequiredUniqueChars, providerName, providerKey), ValueType.Number); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireLowercase), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireLowercase, providerName, providerKey), ValueType.Boolean); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireUppercase), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireUppercase, providerName, providerKey), ValueType.Boolean); passwordSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.Password.RequireNonAlphanumeric), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.Password.RequireNonAlphanumeric, providerName, providerKey), ValueType.Boolean); #endregion #region 双因素 var twoFactorSetting = identitySetting.AddSetting(L["DisplayName:Identity.TwoFactor"], L["Description:Identity.TwoFactor"]); twoFactorSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.TwoFactor.Behaviour), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.TwoFactor.Behaviour, providerName, providerKey), ValueType.Option) .AddOption(IdentityTwoFactorBehaviour.Optional.ToString(), IdentityTwoFactorBehaviour.Optional.ToString()) .AddOption(IdentityTwoFactorBehaviour.Forced.ToString(), IdentityTwoFactorBehaviour.Forced.ToString()) .AddOption(IdentityTwoFactorBehaviour.Disabled.ToString(), IdentityTwoFactorBehaviour.Disabled.ToString()); twoFactorSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.TwoFactor.UsersCanChange), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.TwoFactor.UsersCanChange, providerName, providerKey), ValueType.Boolean); #endregion #region 组织机构 var ouSetting = identitySetting.AddSetting(L["DisplayName:Identity.OrganizationUnit"], L["Description:Identity.OrganizationUnit"]); ouSetting.AddDetail( SettingDefinitionManager.Get(IdentitySettingNames.OrganizationUnit.MaxUserMembershipCount), StringLocalizerFactory, await SettingManager.GetOrNullAsync(IdentitySettingNames.OrganizationUnit.MaxUserMembershipCount, providerName, providerKey), ValueType.Number); settingGroups.Add(identitySetting); #endregion #endregion #region 邮件设置 var emailSettingGroup = new SettingGroupDto(L["DisplayName:Emailing"], L["Description:Emailing"]); var defaultMailSetting = emailSettingGroup.AddSetting(L["DisplayName:Emailing.Default"], L["Description:Emailing.Default"]); defaultMailSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.DefaultFromAddress), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.DefaultFromAddress, providerName, providerKey), ValueType.String); defaultMailSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.DefaultFromDisplayName), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.DefaultFromDisplayName, providerName, providerKey), ValueType.String); var smtpSetting = emailSettingGroup.AddSetting(L["DisplayName:Emailing.Smtp"], L["Description:Emailing.Smtp"]); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.EnableSsl), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.EnableSsl, providerName, providerKey), ValueType.Boolean); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.UseDefaultCredentials), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.UseDefaultCredentials, providerName, providerKey), ValueType.Boolean); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Domain), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Domain, providerName, providerKey), ValueType.String); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Host), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Host, providerName, providerKey), ValueType.String); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Port), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Port, providerName, providerKey), ValueType.Number); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.UserName), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.UserName, providerName, providerKey), ValueType.String); smtpSetting.AddDetail( SettingDefinitionManager.Get(EmailSettingNames.Smtp.Password), StringLocalizerFactory, await SettingManager.GetOrNullAsync(EmailSettingNames.Smtp.Password, providerName, providerKey), ValueType.String); settingGroups.Add(emailSettingGroup); #endregion #region 文件设置 var fileSettingGroup = new SettingGroupDto(L["DisplayName:FileManagement"], L["Description:FileManagement"]); var fileSystemSetting = fileSettingGroup.AddSetting(L["DisplayName:FileManagement.FileSystem"], L["Description:FileManagement.FileSystem"]); fileSystemSetting.AddDetail( SettingDefinitionManager.Get(AbpFileManagementSettingNames.FileLimitLength), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AbpFileManagementSettingNames.FileLimitLength, providerName, providerKey), ValueType.Number); fileSystemSetting.AddDetail( SettingDefinitionManager.Get(AbpFileManagementSettingNames.AllowFileExtensions), StringLocalizerFactory, await SettingManager.GetOrNullAsync(AbpFileManagementSettingNames.AllowFileExtensions, providerName, providerKey), ValueType.String); settingGroups.Add(fileSettingGroup); #endregion return(new ListResultDto <SettingGroupDto>(settingGroups)); }