import Elysia from "elysia";
import { OidcClient } from "elysia-openid-client";
// Callback URL: `https://app.example.com/auth/callback`
const rp = await OidcClient.factory({
baseUrl: "https://app.example.com",
issuerUrl: "https://issuer.exmaple.com",
client_secret: "client-secret",
const endpoints = rp.endpoints;
const authHook = rp.authHook;
console.log(rp.issuer.metadata);
.get("/", ({ sessionStatus }) =>
sessionStatus ? "Logged in" : "Restricted",
.get("/status", ({ sessionStatus }) => sessionStatus)
.get("/claims", ({ sessionClaims }) => sessionClaims)
// Get UserInfo internally
async ({ cookie, session }) =>
await rp.userinfo({ cookie, session }),
.get("/free", () => "Not restricted")
.get("/logout", () => "Logout completed")