diff --git a/libs/common/src/admin-console/abstractions/policy/policy.service.abstraction.ts b/libs/common/src/admin-console/abstractions/policy/policy.service.abstraction.ts index 4c1f7420a09..b889e542b79 100644 --- a/libs/common/src/admin-console/abstractions/policy/policy.service.abstraction.ts +++ b/libs/common/src/admin-console/abstractions/policy/policy.service.abstraction.ts @@ -51,10 +51,10 @@ export abstract class PolicyService { ) => Observable; /** - * Combines all Master Password policies that are passed in and returns + * Combines all Master Password Policies that are passed in and returns * back the strongest combination of all the policies in the form of a - * MasterPasswordPolicyOptions. - * @param policies + * MasterPasswordPolicyOptions. Returns `undefined` if no master password + * policies apply to a user. */ abstract combinePoliciesIntoMasterPasswordPolicyOptions( policies: Policy[], diff --git a/libs/common/src/admin-console/services/policy/default-policy.service.spec.ts b/libs/common/src/admin-console/services/policy/default-policy.service.spec.ts index 7dbf22cdf03..9db61ec5c95 100644 --- a/libs/common/src/admin-console/services/policy/default-policy.service.spec.ts +++ b/libs/common/src/admin-console/services/policy/default-policy.service.spec.ts @@ -654,6 +654,32 @@ describe("PolicyService", () => { expect(result).toBeUndefined(); }); + + it("returns undefined when policies are not MasterPassword related", () => { + const unrelatedPolicyRequirements = { + minComplexity: 3, + minLength: 10, + requireUpper: true, + }; + const policies = [ + new Policy( + policyData( + "1", + "org1", + PolicyType.MaximumVaultTimeout, + true, + unrelatedPolicyRequirements, + ), + ), + new Policy( + policyData("2", "org2", PolicyType.DisableSend, true, unrelatedPolicyRequirements), + ), + ]; + + const result = policyService.combinePoliciesIntoMasterPasswordPolicyOptions(policies); + + expect(result).toBeUndefined(); + }); }); function policyData( diff --git a/libs/common/src/admin-console/services/policy/default-policy.service.ts b/libs/common/src/admin-console/services/policy/default-policy.service.ts index 7f9418c2628..60974a7e2d9 100644 --- a/libs/common/src/admin-console/services/policy/default-policy.service.ts +++ b/libs/common/src/admin-console/services/policy/default-policy.service.ts @@ -234,14 +234,11 @@ export class DefaultPolicyService implements PolicyService { source.minComplexity ?? target.minComplexity, ); target.minLength = Math.max(target.minLength, source.minLength ?? target.minLength); - target.requireUpper = target.requireUpper || (source.requireUpper ?? target.requireUpper); - target.requireLower = target.requireLower || (source.requireLower ?? target.requireLower); - target.requireNumbers = - target.requireNumbers || (source.requireNumbers ?? target.requireNumbers); - target.requireSpecial = - target.requireSpecial || (source.requireSpecial ?? target.requireSpecial); - target.enforceOnLogin = - target.enforceOnLogin || (source.enforceOnLogin ?? target.enforceOnLogin); + target.requireUpper = Boolean(target.requireUpper || source.requireUpper); + target.requireLower = Boolean(target.requireLower || source.requireLower); + target.requireNumbers = Boolean(target.requireNumbers || source.requireNumbers); + target.requireSpecial = Boolean(target.requireSpecial || source.requireSpecial); + target.enforceOnLogin = Boolean(target.enforceOnLogin || source.enforceOnLogin); } } }