Skip to content

Compliance portal auth#1487

Draft
codenem wants to merge 4 commits into
mainfrom
compliance-portal-auth
Draft

Compliance portal auth#1487
codenem wants to merge 4 commits into
mainfrom
compliance-portal-auth

Conversation

@codenem

@codenem codenem commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Summary by cubic

Adds a modal sign-in flow (magic link + OIDC) to the compliance portal and gates “Get Access” behind authentication. Also adds Dialog and Toaster in packages/ui, wires the toast host, new auth routes, and renames LoginForm to SignInForm for consistency.

Other +1242 -10

  • Add sign-in dialog (SignInForm, OIDC buttons, magic-link) and SignInDialogProvider; wire TopBar “Get Access” to open it.
  • Resume deferred access requests after auth via useResumeAccessRequest; handle FULL_NAME_REQUIRED and NDA errors; show toasts.
  • Validate and build safe continue targets (getSafeContinueUrl, buildRequestAllContinueUrl) to prevent off-site redirects.
  • Add standalone auth routes/pages: verify magic link, full name, expired link, already-used link; minimal AuthLayout.
  • Mount global toast host (<Toaster />) and add i18n strings in en-US and fr-FR.
  • Minor layout/route updates to integrate the dialog and resume flow.

Package: ui +760 -0

  • Add headless Dialog primitives: root, popup, header/body/footer, title/description, trigger/close, skeleton, and Tailwind variants.
  • Add styled Toaster with types, icons, viewport, and theme variants.
  • Add Storybook stories for Dialog and Toaster (controlled dialog and skeleton).

Written for commit a2cb17f. Summary will update on new commits.

Review in cubic

codenem added 4 commits July 15, 2026 13:13
The compliance portal's "Get Access" button was inert and the portal
had no way to authenticate or request trust-center access. Add a modal
sign-in flow (magic link + OIDC) that gates the requestAllAccesses
mutation, mirroring the trust app's flow but as a dialog instead of a
full /connect page.

Introduce the two v2 UI-kit primitives this depends on: a headless
Base UI Dialog and a styled Toaster (mutation toasts had no host yet).
Wire the top-bar button to open the dialog, resume the deferred access
request once authenticated, and add standalone routes for magic-link
verification and the full-name gate.

Signed-off-by: Émile Ré <emile@probo.com>
Cover the new v2 kit primitives in Storybook: the Dialog (uncontrolled
trigger, controlled open state, and skeleton) and the Toaster (title-only
toasts as the common case, plus a title+description variant).

Signed-off-by: Émile Ré <emile@probo.com>
The skeleton frame carries the dialog's shadow-6 elevation, which only
reads correctly against the dimmed overlay. Render the story over a
simulated backdrop so the preview matches how the dialog appears.

Signed-off-by: Émile Ré <emile@probo.com>
The form and its Relay operation were named after the Figma "Login Form"
layer, but the rest of the feature speaks "sign in" (SignInDialog,
auth.signIn.*, the visible copy). Align the name so the dialog and its
form share one prefix.

Signed-off-by: Émile Ré <emile@probo.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant