From a70b0702c3ac765b0126611f55bf2dc3913fe5b9 Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Mon, 29 Jun 2026 14:50:35 +1000 Subject: [PATCH] fix: add missing teams branding guard (#3049) --- .../t.$teamUrl+/settings.branding.tsx | 83 ++++++++++++------- 1 file changed, 55 insertions(+), 28 deletions(-) diff --git a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.branding.tsx b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.branding.tsx index 287a91b8b..b674dc460 100644 --- a/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.branding.tsx +++ b/apps/remix/app/routes/_authenticated+/t.$teamUrl+/settings.branding.tsx @@ -1,14 +1,17 @@ import { useCurrentOrganisation } from '@documenso/lib/client-only/providers/organisation'; import { IS_BILLING_ENABLED } from '@documenso/lib/constants/app'; import { putFile } from '@documenso/lib/universal/upload/put-file'; +import { canExecuteOrganisationAction } from '@documenso/lib/utils/organisations'; import type { SanitizeBrandingCssWarning } from '@documenso/lib/utils/sanitize-branding-css'; import { trpc } from '@documenso/trpc/react'; import { Alert, AlertDescription, AlertTitle } from '@documenso/ui/primitives/alert'; +import { Button } from '@documenso/ui/primitives/button'; import { useToast } from '@documenso/ui/primitives/use-toast'; import { plural } from '@lingui/core/macro'; import { Trans, useLingui } from '@lingui/react/macro'; import { Loader } from 'lucide-react'; import { useState } from 'react'; +import { Link } from 'react-router'; import { BrandingPreferencesForm, @@ -36,6 +39,8 @@ export default function TeamsSettingsPage() { const { mutateAsync: updateTeamSettings } = trpc.team.settings.update.useMutation(); + const canConfigureBranding = organisation.organisationClaim.flags.allowCustomBranding || !IS_BILLING_ENABLED(); + const canCustomBranding = organisation.organisationClaim.flags.embedSigningWhiteLabel === true || !IS_BILLING_ENABLED(); @@ -112,39 +117,61 @@ export default function TeamsSettingsPage() { subtitle={t`Here you can set preferences and defaults for branding.`} /> -
- + {canConfigureBranding ? ( +
+ - {cssWarnings.length > 0 && ( - + {cssWarnings.length > 0 && ( + + + CSS rules were dropped during sanitisation + + + +
    + {cssWarnings.map((warning, index) => ( +
  • + {warning.detail} + {warning.line !== undefined && ( + + {' '} + (line {warning.line}) + + )} +
  • + ))} +
+
+
+ )} +
+ ) : ( + +
- CSS rules were dropped during sanitisation + Branding Preferences - -
    - {cssWarnings.map((warning, index) => ( -
  • - {warning.detail} - {warning.line !== undefined && ( - - {' '} - (line {warning.line}) - - )} -
  • - ))} -
+ + Currently branding can only be configured for Teams and above plans. - - )} -
+ + + {canExecuteOrganisationAction('MANAGE_BILLING', organisation.currentOrganisationRole) && ( + + )} + + )} ); }