* feat: oidc feat: organization switcher refactor: org context feat: invitations GLM * feat: link current account * refactor: own page for sso registration * feat: per-user account management * refactor: code style * refactor: user existing check * refactor: restrict provider configuration to super admins only * refactor: cleanup / pr review * chore: fix lint issues * chore: pr feedbacks * test(e2e): automated tests for OIDC * fix: check url first for sso provider identification * fix: prevent oidc provider to be named "credential"
31 lines
715 B
TypeScript
31 lines
715 B
TypeScript
import type { GenericEndpointContext } from "@better-auth/core";
|
|
|
|
export function normalizeEmail(email: string): string {
|
|
return email.trim().toLowerCase();
|
|
}
|
|
|
|
export function extractProviderIdFromUrl(url: string): string | null {
|
|
try {
|
|
const pathname = new URL(url, "http://localhost").pathname;
|
|
const match = pathname.match(/\/sso\/(?:saml2\/)?callback\/([^/]+)$/);
|
|
return match?.[1] ?? null;
|
|
} catch {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
export function extractProviderIdFromContext(ctx?: GenericEndpointContext | null) {
|
|
if (!ctx) {
|
|
return null;
|
|
}
|
|
|
|
if (ctx.params?.providerId) {
|
|
return ctx.params.providerId;
|
|
}
|
|
|
|
if (ctx.request?.url) {
|
|
return extractProviderIdFromUrl(ctx.request.url);
|
|
}
|
|
|
|
return null;
|
|
}
|