Repository navigation
feat(auth): fetch a custom OAuth/OIDC provider as an admin - #591
Merged
Merged
Conversation
This was referenced Oct 29, 2026
Tr00d
force-pushed
the
feat/auth.admin.create_provider
branch
from
October 29, 2026 14:09
5791cd9 to
2d4275e
Compare
Tr00d
force-pushed
the
feat/auth.admin.get_provider
branch
from
October 29, 2026 14:12
95f804a to
a3bd552
Compare
Tr00d
force-pushed
the
feat/auth.admin.create_provider
branch
from
October 29, 2026 14:19
2d4275e to
df67450
Compare
Tr00d
force-pushed
the
feat/auth.admin.get_provider
branch
from
October 29, 2026 14:21
a3bd552 to
69623fe
Compare
Tr00d
force-pushed
the
feat/auth.admin.create_provider
branch
from
October 29, 2026 14:28
df67450 to
627dbc6
Compare
Tr00d
force-pushed
the
feat/auth.admin.get_provider
branch
from
October 29, 2026 14:28
69623fe to
fa5b60f
Compare
Tr00d
marked this pull request as ready for review
October 29, 2026 15:00
Tr00d
force-pushed
the
feat/auth.admin.get_provider
branch
2 times, most recently
from
October 29, 2026 15:11
489bbfc to
bd1ecd3
Compare
Tr00d
force-pushed
the
feat/auth.admin.get_provider
branch
from
October 29, 2026 15:18
bd1ecd3 to
ca5a133
Compare
Drop the duplicated CreateCustomProviderAsync entry from PublicAPI.Unshipped.txt, restore the generated sdk-compliance.yaml entry for update_provider, keep the update member's doc comment intact, and remove a whitespace-only line.
Tr00d
added a commit
that referenced
this pull request
Oct 29, 2026
Rebuilt on master after #591: list's members sit after get's, its using directives are added, and PublicAPI.Unshipped.txt is regenerated by the analyzer.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Admins can fetch a custom OAuth/OIDC provider by its identifier.
Capability:
auth.admin.get_provider: Admin Get Provider.Public API
New types: none. It returns the
CustomProvideradded in #590.IGotrueApi<TUser, TSession>gains the matchingGetCustomProviderAsync(string jwt, string identifier, CancellationToken).Behavior
GET /admin/custom-providers/{identifier}with the service-role keyidentifier, required, starting withcustom:CustomProvider. The return is never null: a missing provider throws.ArgumentNullExceptionfornull.ArgumentExceptionwhen the identifier lacks the case-sensitivecustom:prefix or contains/,\,?,#or%. This is the check delete uses.GotrueException:Reason = CustomProviderNotFoundon 404custom_provider_not_found;Reason = AdminTokenRequiredon 401/403;ErrorCode = feature_disabledon 404 when custom providers are disabled. Anullbody also throwsGotrueException.Deviations from supabase-js
supabase-js puts the identifier into the URL without encoding or validation. This SDK rejects identifiers that would change the route before sending anything, as
DeleteCustomProviderAsyncdoes.Tests
GetCustomProviderTestsCustomProviderNotFound. Non-admin key →AdminTokenRequired.GetCustomProviderContractTestsCustomProviderNotFound.nullbody. A cancelled token sends nothing. The call completes when the caller blocks on a context that never runs continuations.GetCustomProviderIdentifierTestsChanged-line coverage: 100% (7 lines, measured against
master). Mutation: 2/2 killed on changed lines, 0 survivors (1 ignored). The local mutation run predates the split; the production code is unchanged and themutationcheck on this PR reruns it.No wire-shape approval snapshot: the request has no body.
Layout
Get has no types of its own, so it has no production folder. It returns
Supabase.Gotrue.Common.CustomProviderfrom #590. Tests:packages/Gotrue/Gotrue.Tests/GetCustomProvider/.Notes
The custom-provider route is now built in one helper (
CustomProviderUrl), shared with delete.