From e67e19358a0f35e477e3a0c8d8ce110ced2826a4 Mon Sep 17 00:00:00 2001 From: David Nguyen Date: Fri, 13 Mar 2026 12:06:10 +1100 Subject: [PATCH] fix: add hipaa flag (#2603) --- .../dialogs/claim-create-dialog.tsx | 2 +- .../dialogs/claim-update-dialog.tsx | 2 +- .../components/general/admin-license-card.tsx | 27 ++++++++++++++++++- .../internal/backport-subscription-claims.ts | 1 + packages/lib/types/license.ts | 1 + packages/lib/types/subscription.ts | 7 +++++ 6 files changed, 37 insertions(+), 3 deletions(-) diff --git a/apps/remix/app/components/dialogs/claim-create-dialog.tsx b/apps/remix/app/components/dialogs/claim-create-dialog.tsx index 589484693..b308fa485 100644 --- a/apps/remix/app/components/dialogs/claim-create-dialog.tsx +++ b/apps/remix/app/components/dialogs/claim-create-dialog.tsx @@ -57,7 +57,7 @@ export const ClaimCreateDialog = ({ licenseFlags }: ClaimCreateDialogProps) => { - + Create Subscription Claim diff --git a/apps/remix/app/components/dialogs/claim-update-dialog.tsx b/apps/remix/app/components/dialogs/claim-update-dialog.tsx index 6f0051ab4..01057910b 100644 --- a/apps/remix/app/components/dialogs/claim-update-dialog.tsx +++ b/apps/remix/app/components/dialogs/claim-update-dialog.tsx @@ -53,7 +53,7 @@ export const ClaimUpdateDialog = ({ claim, trigger, licenseFlags }: ClaimUpdateD {trigger} - + Update Subscription Claim diff --git a/apps/remix/app/components/general/admin-license-card.tsx b/apps/remix/app/components/general/admin-license-card.tsx index 1eb2167e4..c88e42aca 100644 --- a/apps/remix/app/components/general/admin-license-card.tsx +++ b/apps/remix/app/components/general/admin-license-card.tsx @@ -1,7 +1,11 @@ +import { useState } from 'react'; + import { Trans, useLingui } from '@lingui/react/macro'; import { ArrowRightIcon, CheckCircle2Icon, + EyeIcon, + EyeOffIcon, KeyRoundIcon, Loader2Icon, RefreshCwIcon, @@ -32,6 +36,7 @@ type AdminLicenseCardProps = { export const AdminLicenseCard = ({ licenseData }: AdminLicenseCardProps) => { const { t, i18n } = useLingui(); + const [isLicenseKeyVisible, setIsLicenseKeyVisible] = useState(false); const { license } = licenseData || {}; @@ -53,6 +58,7 @@ export const AdminLicenseCard = ({ licenseData }: AdminLicenseCardProps) => {

Invalid License Key

+ {/* Don't need to hide invalid license keys. */}

{licenseData.requestedLicenseKey}

) : ( @@ -135,7 +141,26 @@ export const AdminLicenseCard = ({ licenseData }: AdminLicenseCardProps) => {

License Key

-

{license.licenseKey}

+
+

+ {isLicenseKeyVisible ? license.licenseKey : '•'.repeat(license.licenseKey.length)} +

+ + +
diff --git a/packages/lib/jobs/definitions/internal/backport-subscription-claims.ts b/packages/lib/jobs/definitions/internal/backport-subscription-claims.ts index 9698d0c8b..dcb83456e 100644 --- a/packages/lib/jobs/definitions/internal/backport-subscription-claims.ts +++ b/packages/lib/jobs/definitions/internal/backport-subscription-claims.ts @@ -18,6 +18,7 @@ const BACKPORT_SUBSCRIPTION_CLAIM_JOB_DEFINITION_SCHEMA = z.object({ embedSigning: z.literal(true).optional(), embedSigningWhiteLabel: z.literal(true).optional(), cfr21: z.literal(true).optional(), + hipaa: z.literal(true).optional(), // Todo: Envelopes - Do we need to check? // authenticationPortal & emailDomains missing here. }), diff --git a/packages/lib/types/license.ts b/packages/lib/types/license.ts index b0194fff3..15c361fb8 100644 --- a/packages/lib/types/license.ts +++ b/packages/lib/types/license.ts @@ -8,6 +8,7 @@ export const ZLicenseClaimSchema = z.object({ embedAuthoring: z.boolean().optional(), embedAuthoringWhiteLabel: z.boolean().optional(), cfr21: z.boolean().optional(), + hipaa: z.boolean().optional(), authenticationPortal: z.boolean().optional(), billing: z.boolean().optional(), }); diff --git a/packages/lib/types/subscription.ts b/packages/lib/types/subscription.ts index 580994428..724a6c747 100644 --- a/packages/lib/types/subscription.ts +++ b/packages/lib/types/subscription.ts @@ -29,6 +29,8 @@ export const ZClaimFlagsSchema = z.object({ cfr21: z.boolean().optional(), + hipaa: z.boolean().optional(), + authenticationPortal: z.boolean().optional(), allowLegacyEnvelopes: z.boolean().optional(), @@ -85,6 +87,11 @@ export const SUBSCRIPTION_CLAIM_FEATURE_FLAGS: Record< label: '21 CFR', isEnterprise: true, }, + hipaa: { + key: 'hipaa', + label: 'HIPAA', + isEnterprise: true, + }, authenticationPortal: { key: 'authenticationPortal', label: 'Authentication portal',