feat: logout callback with 'take me to I was' functionality

This commit is contained in:
Raul Lugo
2026-01-28 11:55:57 +01:00
parent 5e4cd49d0a
commit eceee79d0b
4 changed files with 184 additions and 33 deletions

View File

@@ -14,7 +14,12 @@ export type OidcIntegrationOptions = {
issuer: EnvString;
clientId: EnvString;
scopes?: string; // default "openid email profile"
routes?: { login?: string; callback?: string; logout?: string }; // defaults: /login, /oidc/callback, /logout
routes?: {
login?: string;
callback?: string;
logout?: string;
logoutCallback?: string;
}; // defaults: /login, /oidc/callback, /logout, /logout/callback
redirectUri?: { mode: "infer-from-request" } | { absolute: string };
cookie: {
name?: string;
@@ -34,7 +39,7 @@ export type OidcInjectedOptions = {
clientIdEnv: string;
clientIdFallback?: string;
scopes: string;
routes: { login: string; callback: string; logout: string };
routes: { login: string; callback: string; logout: string; logoutCallback: string };
redirectUri: { mode: "infer-from-request" } | { absolute: string };
cookie: {
name: string;
@@ -59,6 +64,8 @@ function resolveOptions(user: OidcIntegrationOptions): OidcInjectedOptions {
login: user.routes?.login ?? "/login",
callback: user.routes?.callback ?? "/oidc/callback",
logout: user.routes?.logout ?? "/logout",
logoutCallback:
user.routes?.logoutCallback ?? `${user.routes?.logout ?? "/logout"}/callback`,
};
const cookie = {
name: user.cookie?.name ?? "oidc_session",
@@ -126,6 +133,10 @@ export default function resuelyOidc(
pattern: resolved.routes.logout,
entrypoint: fileURLToPath(new URL("./routes/logout.js", import.meta.url)),
});
injectRoute({
pattern: resolved.routes.logoutCallback,
entrypoint: fileURLToPath(new URL("./routes/logout.js", import.meta.url)),
});
},
},
};