/** * Catch-all route that delegates all /oidc/* requests to the oidc-provider. * * This exposes the standard OIDC endpoints: * /oidc/auth — authorization * /oidc/token — token exchange * /oidc/me — userinfo * /oidc/session/end — logout * /oidc/jwks — JSON Web Key Set */ import { getOidcProvider } from "../../utils/oidc-provider.js"; export default defineEventHandler(async (event) => { const provider = await getOidcProvider(); const { req, res } = event.node; // oidc-provider expects paths relative to its own mount point. // Nitro gives us the full path, so strip the /oidc prefix. const originalUrl = req.url || ""; req.url = originalUrl.replace(/^\/oidc/, "") || "/"; // Hand off to oidc-provider's Connect-style callback const callback = provider.callback() as Function; await new Promise((resolve, reject) => { callback(req, res, (err: unknown) => { if (err) reject(err); else resolve(); }); }); });