diff --git a/apps/web/src/app/admin-console/organizations/policies/require-sso.component.ts b/apps/web/src/app/admin-console/organizations/policies/require-sso.component.ts index c969343670..80335eb5d8 100644 --- a/apps/web/src/app/admin-console/organizations/policies/require-sso.component.ts +++ b/apps/web/src/app/admin-console/organizations/policies/require-sso.component.ts @@ -3,6 +3,8 @@ import { Component } from "@angular/core"; import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { Organization } from "@bitwarden/common/admin-console/models/domain/organization"; import { PolicyRequest } from "@bitwarden/common/admin-console/models/request/policy.request"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; @@ -23,11 +25,19 @@ export class RequireSsoPolicy extends BasePolicy { templateUrl: "require-sso.component.html", }) export class RequireSsoPolicyComponent extends BasePolicyComponent { - constructor(private i18nService: I18nService) { + constructor( + private i18nService: I18nService, + private configService: ConfigService, + ) { super(); } - buildRequest(policiesEnabledMap: Map): Promise { + async buildRequest(policiesEnabledMap: Map): Promise { + if (await this.configService.getFeatureFlag(FeatureFlag.Pm13322AddPolicyDefinitions)) { + // We are now relying on server-side validation only + return super.buildRequest(policiesEnabledMap); + } + const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false; if (this.enabled.value && !singleOrgEnabled) { throw new Error(this.i18nService.t("requireSsoPolicyReqError")); diff --git a/apps/web/src/app/admin-console/organizations/policies/single-org.component.ts b/apps/web/src/app/admin-console/organizations/policies/single-org.component.ts index c0a1413aa0..9899c4b919 100644 --- a/apps/web/src/app/admin-console/organizations/policies/single-org.component.ts +++ b/apps/web/src/app/admin-console/organizations/policies/single-org.component.ts @@ -2,6 +2,8 @@ import { Component } from "@angular/core"; import { PolicyType } from "@bitwarden/common/admin-console/enums"; import { PolicyRequest } from "@bitwarden/common/admin-console/models/request/policy.request"; +import { FeatureFlag } from "@bitwarden/common/enums/feature-flag.enum"; +import { ConfigService } from "@bitwarden/common/platform/abstractions/config/config.service"; import { I18nService } from "@bitwarden/common/platform/abstractions/i18n.service"; import { BasePolicy, BasePolicyComponent } from "./base-policy.component"; @@ -18,11 +20,19 @@ export class SingleOrgPolicy extends BasePolicy { templateUrl: "single-org.component.html", }) export class SingleOrgPolicyComponent extends BasePolicyComponent { - constructor(private i18nService: I18nService) { + constructor( + private i18nService: I18nService, + private configService: ConfigService, + ) { super(); } - buildRequest(policiesEnabledMap: Map): Promise { + async buildRequest(policiesEnabledMap: Map): Promise { + if (await this.configService.getFeatureFlag(FeatureFlag.Pm13322AddPolicyDefinitions)) { + // We are now relying on server-side validation only + return super.buildRequest(policiesEnabledMap); + } + if (!this.enabled.value) { if (policiesEnabledMap.get(PolicyType.RequireSso) ?? false) { throw new Error( diff --git a/libs/common/src/enums/feature-flag.enum.ts b/libs/common/src/enums/feature-flag.enum.ts index 45b02471f3..d954f31c19 100644 --- a/libs/common/src/enums/feature-flag.enum.ts +++ b/libs/common/src/enums/feature-flag.enum.ts @@ -35,6 +35,7 @@ export enum FeatureFlag { PM11901_RefactorSelfHostingLicenseUploader = "PM-11901-refactor-self-hosting-license-uploader", Pm3478RefactorOrganizationUserApi = "pm-3478-refactor-organizationuser-api", AccessIntelligence = "pm-13227-access-intelligence", + Pm13322AddPolicyDefinitions = "pm-13322-add-policy-definitions", } export type AllowedFeatureFlagTypes = boolean | number | string; @@ -80,6 +81,7 @@ export const DefaultFeatureFlagValue = { [FeatureFlag.PM11901_RefactorSelfHostingLicenseUploader]: FALSE, [FeatureFlag.Pm3478RefactorOrganizationUserApi]: FALSE, [FeatureFlag.AccessIntelligence]: FALSE, + [FeatureFlag.Pm13322AddPolicyDefinitions]: FALSE, } satisfies Record; export type DefaultFeatureFlagValueType = typeof DefaultFeatureFlagValue;