SettingDefinitionManager.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using System.Collections.Generic;
  2. using System.Collections.Immutable;
  3. using Abp;
  4. using Abp.Configuration;
  5. using Abp.Dependency;
  6. using Abp.Domain.Repositories;
  7. using Abp.Localization;
  8. using IwbZero.Authorization.Users;
  9. using IwbZero.BaseSysInfo;
  10. using IwbZero.Configuration;
  11. namespace IwbZero.Setting
  12. {
  13. /// <summary>
  14. /// Implements <see cref="IIwbSettingDefinitionManager"/>.
  15. /// </summary>
  16. public class IwbSettingDefinitionManager<TSet,TUser> : IIwbSettingDefinitionManager, ISingletonDependency
  17. where TUser : IwbSysUser<TUser>
  18. where TSet : IwbSysSetting<TUser>
  19. {
  20. protected readonly IIocManager IocManager;
  21. private readonly IDictionary<string, SettingDefinition> _settings;
  22. /// <summary>
  23. /// Constructor.
  24. /// </summary>
  25. public IwbSettingDefinitionManager(IIocManager iocManager
  26. //, ISettingsConfiguration settingsConfiguration
  27. )
  28. {
  29. IocManager = iocManager;
  30. _settings = new Dictionary<string, SettingDefinition>();
  31. }
  32. public virtual void Initialize()
  33. {
  34. using (var settingRepository = IocManager.ResolveAsDisposable<IRepository<TSet, int>>())
  35. {
  36. var settings = settingRepository.Object.GetAllList(a => a.IsDeleted == false);
  37. Initialize(settings);
  38. }
  39. }
  40. public void Initialize(List<TSet> settings)
  41. {
  42. //using (var settingRepository = IocManager.ResolveAsDisposable<IRepository<TSet, int>>())
  43. //{
  44. // var settings = settingRepository.Object.GetAllList(a => a.IsDeleted == false);
  45. //}
  46. foreach (var s in settings)
  47. {
  48. var setting = new SettingDefinition(s.Code, s.Value, scopes: SettingScopes.Application | SettingScopes.Tenant | SettingScopes.User, isVisibleToClients: true);
  49. if (_settings.ContainsKey(s.Code))
  50. _settings.Remove(s.Code);
  51. _settings[s.Code] = setting;
  52. }
  53. DefaultsSetting();
  54. }
  55. public virtual void Referesh()
  56. {
  57. Initialize();
  58. }
  59. public void ChangeSettingDefinition(string name, string value)
  60. {
  61. if (_settings.ContainsKey(name))
  62. _settings.Remove(name);
  63. var setting = new SettingDefinition(name, value, scopes: SettingScopes.Application | SettingScopes.Tenant | SettingScopes.User, isVisibleToClients: true);
  64. _settings[name] = setting;
  65. }
  66. private void DefaultsSetting()
  67. {
  68. _settings[IwbAdminSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin] = new SettingDefinition(
  69. IwbAdminSettingNames.UserManagement.IsEmailConfirmationRequiredForLogin,
  70. "false",
  71. new FixedLocalizableString("Is email confirmation required for login."),
  72. scopes: SettingScopes.Application | SettingScopes.Tenant,
  73. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  74. );
  75. _settings[IwbAdminSettingNames.OrganizationUnits.MaxUserMembershipCount] =
  76. new SettingDefinition(
  77. IwbAdminSettingNames.OrganizationUnits.MaxUserMembershipCount,
  78. int.MaxValue.ToString(),
  79. new FixedLocalizableString("Maximum allowed organization unit membership count for a user."),
  80. scopes: SettingScopes.Application | SettingScopes.Tenant,
  81. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  82. );
  83. _settings[IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsEnabled] =
  84. new SettingDefinition(
  85. IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsEnabled,
  86. "true",
  87. new FixedLocalizableString("Is two factor login enabled."),
  88. scopes: SettingScopes.Application | SettingScopes.Tenant,
  89. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  90. );
  91. _settings[IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsRememberBrowserEnabled] =
  92. new SettingDefinition(
  93. IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsRememberBrowserEnabled,
  94. "true",
  95. new FixedLocalizableString("Is browser remembering enabled for two factor login."),
  96. scopes: SettingScopes.Application | SettingScopes.Tenant,
  97. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  98. );
  99. _settings[IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsEmailProviderEnabled] =
  100. new SettingDefinition(
  101. IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsEmailProviderEnabled,
  102. "true",
  103. new FixedLocalizableString("Is email provider enabled for two factor login."),
  104. scopes: SettingScopes.Application | SettingScopes.Tenant,
  105. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  106. );
  107. _settings[IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsSmsProviderEnabled] =
  108. new SettingDefinition(
  109. IwbAdminSettingNames.UserManagement.TwoFactorLogin.IsSmsProviderEnabled,
  110. "true",
  111. new FixedLocalizableString("Is sms provider enabled for two factor login."),
  112. scopes: SettingScopes.Application | SettingScopes.Tenant,
  113. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  114. );
  115. _settings[IwbAdminSettingNames.UserManagement.UserLockOut.IsEnabled] =
  116. new SettingDefinition(
  117. IwbAdminSettingNames.UserManagement.UserLockOut.IsEnabled,
  118. "true",
  119. new FixedLocalizableString("Is user lockout enabled."),
  120. scopes: SettingScopes.Application | SettingScopes.Tenant,
  121. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  122. );
  123. _settings[IwbAdminSettingNames.UserManagement.UserLockOut.MaxFailedAccessAttemptsBeforeLockout] =
  124. new SettingDefinition(
  125. IwbAdminSettingNames.UserManagement.UserLockOut.MaxFailedAccessAttemptsBeforeLockout,
  126. "5",
  127. new FixedLocalizableString("Maxumum Failed access attempt count before user lockout."),
  128. scopes: SettingScopes.Application | SettingScopes.Tenant,
  129. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  130. );
  131. _settings[IwbAdminSettingNames.UserManagement.UserLockOut.DefaultAccountLockoutSeconds] =
  132. new SettingDefinition(
  133. IwbAdminSettingNames.UserManagement.UserLockOut.DefaultAccountLockoutSeconds,
  134. "300", //5 minutes
  135. new FixedLocalizableString("User lockout in seconds."),
  136. scopes: SettingScopes.Application | SettingScopes.Tenant,
  137. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  138. );
  139. _settings[IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireDigit] =
  140. new SettingDefinition(
  141. IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireDigit,
  142. "false",
  143. new FixedLocalizableString("Require digit."),
  144. scopes: SettingScopes.Application | SettingScopes.Tenant,
  145. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  146. );
  147. _settings[IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireLowercase] =
  148. new SettingDefinition(
  149. IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireLowercase,
  150. "false",
  151. new FixedLocalizableString("Require lowercase."),
  152. scopes: SettingScopes.Application | SettingScopes.Tenant,
  153. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  154. );
  155. _settings[IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireNonAlphanumeric] =
  156. new SettingDefinition(
  157. IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireNonAlphanumeric,
  158. "false",
  159. new FixedLocalizableString("Require non alphanumeric."),
  160. scopes: SettingScopes.Application | SettingScopes.Tenant,
  161. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  162. );
  163. _settings[IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireUppercase] =
  164. new SettingDefinition(
  165. IwbAdminSettingNames.UserManagement.PasswordComplexity.RequireUppercase,
  166. "false",
  167. new FixedLocalizableString("Require upper case."),
  168. scopes: SettingScopes.Application | SettingScopes.Tenant,
  169. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  170. );
  171. _settings[IwbAdminSettingNames.UserManagement.PasswordComplexity.RequiredLength] =
  172. new SettingDefinition(
  173. IwbAdminSettingNames.UserManagement.PasswordComplexity.RequiredLength,
  174. "3",
  175. new FixedLocalizableString("Required length."),
  176. scopes: SettingScopes.Application | SettingScopes.Tenant,
  177. clientVisibilityProvider: new VisibleSettingClientVisibilityProvider()
  178. );
  179. }
  180. public SettingDefinition GetSettingDefinition(string name)
  181. {
  182. if (!_settings.TryGetValue(name, out var settingDefinition))
  183. {
  184. throw new AbpException("There is no setting defined with name: " + name);
  185. }
  186. return settingDefinition;
  187. }
  188. public IReadOnlyList<SettingDefinition> GetAllSettingDefinitions()
  189. {
  190. return _settings.Values.ToImmutableList();
  191. }
  192. //private IDisposableDependencyObjectWrapper<SettingProvider> CreateProvider(Type providerType)
  193. //{
  194. // return _iocManager.ResolveAsDisposable<SettingProvider>(providerType);
  195. //}
  196. }
  197. }