1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-06 19:53:59 +00:00

fix(policy-service): Policy Service Update [PM-22723] - Fixes made per suggestions.

This commit is contained in:
Patrick Pimentel
2025-06-18 16:34:53 -04:00
parent fb5891096b
commit 65fa324680
3 changed files with 34 additions and 11 deletions

View File

@@ -51,10 +51,10 @@ export abstract class PolicyService {
) => Observable<MasterPasswordPolicyOptions | undefined>;
/**
* 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[],

View File

@@ -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(

View File

@@ -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);
}
}
}