Skip to content

feat: frontend SSO support#3582

Merged
juliusgeo merged 47 commits into
mainfrom
feat_propelauth_sso
Apr 27, 2026
Merged

feat: frontend SSO support#3582
juliusgeo merged 47 commits into
mainfrom
feat_propelauth_sso

Conversation

@juliusgeo
Copy link
Copy Markdown
Contributor

@juliusgeo juliusgeo commented Apr 8, 2026

Description

Adds frontend support for organization level SSO.

image image image image

Fixes #3677

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Documentation change (pure documentation change)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Refactor (non-breaking changes to code which doesn't change any behaviour)
  • CI (any automation pipeline changes)
  • Chore (changes which are not directly related to any business logic)
  • Test changes (add, refactor, improve or change a test)
  • This change requires a documentation update

What's Changed

  • Add a list of tasks or features here...

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 8, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
hatchet-docs Ready Ready Preview, Comment Apr 23, 2026 10:00pm

Request Review

@promptless-for-oss
Copy link
Copy Markdown

Promptless prepared a documentation update related to this change.

Triggered by this PR

Added documentation for the new Enterprise SSO feature to the security page, including supported identity providers (Okta, Microsoft Entra, Google Workspace, OneLogin, JumpCloud, and Generic OIDC), configuration instructions, and PKCE support details.

Review at https://app.gopromptless.ai/suggestions/eaa9b5a0-cf64-4dbb-a9af-cfd6cd0b32f9

Copy link
Copy Markdown
Contributor

@mrkaye97 mrkaye97 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

some screenshots would be great too!

@@ -0,0 +1,175 @@
"use client";
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks like a nextjs / ssr thing?

Comment thread frontend/app/src/lib/sso/sso-utils.ts Outdated
Comment on lines +50 to +52
clientId: info.clientId || "",
clientSecret: info.clientSecret || "",
ssoDomain: info.ssoDomain || "",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will this work if these are unset? maybe we should throw

Comment on lines +27 to +37
const cloudMetaQuery = useQuery({
queryKey: ['cloudmetadata:get'],
queryFn: async () => {
const meta = await api.cloudMetadataGet();
return meta;
},
staleTime: 1000 * 60,
});
if (!cloudMetaQuery.isError && cloudMetaQuery.data?.data?.ssoEnabled) {
data?.auth?.schemes?.push('propelauth');
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do we not have this somewhere else? maybe i'm getting confused with the new control plane work


const makeApi = (orgId: string): SsoApi => ({
async get() {
const r = await fetch(`/api/v1/management/organizations/${orgId}/sso`);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this feels like it ignores our openapi setup?

},
async upsert(body) {
const r = await fetch(
`/api/v1/management/organizations/${orgId}/sso`,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here, maybe I'm missing some prior art in how orgs are set up

const [isEditingName, setIsEditingName] = useState(false);
const [editedName, setEditedName] = useState('');

// SSO domain state
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's remove comments like this

enabled: !!orgId,
});

const handleAddSsoDomain = async () => {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this sort of thing probably needs to be wrapped in useCallback - I'm a bit surprised the linter is okay with it

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we use that for any of the other handlers on this page at least...

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would be shocked if we needed all of these new components - we should be able to reuse existing components for all seven of these

@@ -0,0 +1,199 @@
'use client';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

still pretty sure we don't need this use client directive - this is a thing for NextJS and TanStack Start and other similar SSR frameworks afaik

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bumping this ^

@juliusgeo juliusgeo merged commit d89ce82 into main Apr 27, 2026
52 of 56 checks passed
@juliusgeo juliusgeo deleted the feat_propelauth_sso branch April 27, 2026 19:52
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.

[CLOUD] SSO support for login

3 participants