Skip to content

feat: Google and Slack SSO login for the operator console#74

Merged
mslipper merged 2 commits into
mainfrom
feat/console-sso-login
Jun 14, 2026
Merged

feat: Google and Slack SSO login for the operator console#74
mslipper merged 2 commits into
mainfrom
feat/console-sso-login

Conversation

@mslipper

Copy link
Copy Markdown
Contributor

Adds a console SSO login flow for Google and Slack alongside the existing email/password form, mirroring the broker OAuth flow's PKCE, signed-state, and encrypted-cookie security but producing a signed-in console user. New sign-ins land pending and require admin approval; emails in the IRON_CONTROL_BOOTSTRAP_ADMINS allowlist become active+admin on first login so the first admin needs no approver.

Identities link by stable (provider, subject) via a new user_identities table, and an unverified IdP email can never adopt an existing account. Adds a status enum and admin boolean to users (existing users backfilled to active+admin), an admin-only /console/users approval screen, and an IRON_CONTROL_-prefixed config reader for the login OAuth clients. Password login is kept as a break-glass fallback and now respects account status.

Google is covered end-to-end by an integration test that fakes the IdP; the Slack OIDC strategy is unit-covered but still needs a live smoke test.

@mslipper mslipper force-pushed the feat/console-sso-login branch 2 times, most recently from 7339140 to 050c2af Compare June 13, 2026 05:07
Adds a console login flow (/auth/:provider/start + /callback) for Google and
Slack alongside the existing email/password form, mirroring the broker OAuth
flow's PKCE + signed-state + encrypted-cookie security but producing a signed-in
User. New sign-ins land pending and require admin approval; emails in the
IRON_CONTROL_BOOTSTRAP_ADMINS allowlist become active+admin on first login.

Identities link by stable (provider, subject) via a new user_identities table;
an unverified IdP email can never adopt an existing account. Adds a status enum
and admin boolean to users (existing users backfilled to active+admin), an
admin-only /console/users approval screen, and an IRON_CONTROL_-prefixed config
reader for the login OAuth clients.
@mslipper mslipper force-pushed the feat/console-sso-login branch from 1fde825 to 020d143 Compare June 14, 2026 01:32
@mslipper mslipper marked this pull request as ready for review June 14, 2026 01:33
@mslipper mslipper merged commit 4fb76b2 into main Jun 14, 2026
5 checks passed
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