diff --git a/src/Core/Models/Response/IdentityTokenResponse.cs b/src/Core/Models/Response/IdentityTokenResponse.cs index eac480f42..55d49bd24 100644 --- a/src/Core/Models/Response/IdentityTokenResponse.cs +++ b/src/Core/Models/Response/IdentityTokenResponse.cs @@ -1,4 +1,6 @@ -using Bit.Core.Enums; +using System.Collections.Generic; +using Bit.Core.Enums; +using Bit.Core.Models.Domain; using Newtonsoft.Json; namespace Bit.Core.Models.Response @@ -24,6 +26,7 @@ namespace Bit.Core.Models.Response public int? KdfParallelism { get; set; } public bool ForcePasswordReset { get; set; } public string KeyConnectorUrl { get; set; } + public MasterPasswordPolicyOptions MasterPasswordPolicy { get; set; } [JsonIgnore] public KdfConfig KdfConfig => new KdfConfig(Kdf, KdfIterations, KdfMemory, KdfParallelism); } diff --git a/src/Core/Models/Response/IdentityTwoFactorResponse.cs b/src/Core/Models/Response/IdentityTwoFactorResponse.cs index 928bd4303..3607a3230 100644 --- a/src/Core/Models/Response/IdentityTwoFactorResponse.cs +++ b/src/Core/Models/Response/IdentityTwoFactorResponse.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using Bit.Core.Enums; +using Bit.Core.Models.Domain; using Newtonsoft.Json; namespace Bit.Core.Models.Response @@ -8,6 +9,7 @@ namespace Bit.Core.Models.Response { public List TwoFactorProviders { get; set; } public Dictionary> TwoFactorProviders2 { get; set; } + public MasterPasswordPolicyOptions MasterPasswordPolicy { get; set; } [JsonProperty("CaptchaBypassToken")] public string CaptchaToken { get; set; } } diff --git a/src/Core/Services/PolicyService.cs b/src/Core/Services/PolicyService.cs index c7b374643..5dc0ab21a 100644 --- a/src/Core/Services/PolicyService.cs +++ b/src/Core/Services/PolicyService.cs @@ -130,6 +130,12 @@ namespace Bit.Core.Services { enforcedOptions.RequireSpecial = true; } + + var enforceOnLogin = GetPolicyBool(currentPolicy, "enforceOnLogin"); + if (enforceOnLogin != null && (bool)enforceOnLogin) + { + enforcedOptions.EnforceOnLogin = true; + } } return enforcedOptions;