| | | 1 | | import { redirect } from "react-router"; |
| | | 2 | | import type { Route } from "./+types/auth.callback"; |
| | | 3 | | import { handleCallback } from "~/lib/oidc.server"; |
| | | 4 | | import { sessionCookie } from "~/lib/session.server"; |
| | | 5 | | |
| | 0 | 6 | | export async function loader({ request }: Route.LoaderArgs) { |
| | 0 | 7 | | const url = new URL(request.url); |
| | 0 | 8 | | const code = url.searchParams.get("code"); |
| | 0 | 9 | | const state = url.searchParams.get("state"); |
| | | 10 | | |
| | 0 | 11 | | if (!code || !state) return redirect("/auth/signin"); |
| | | 12 | | |
| | 0 | 13 | | try { |
| | 0 | 14 | | const { sid, returnTo } = await handleCallback(code, state, request); |
| | 0 | 15 | | return redirect(returnTo, { |
| | | 16 | | headers: { "Set-Cookie": sessionCookie(sid) }, |
| | | 17 | | }); |
| | | 18 | | } catch (err) { |
| | 0 | 19 | | if (err instanceof Response) throw err; |
| | 0 | 20 | | console.error("[auth] callback error", err); |
| | 0 | 21 | | return redirect("/auth/signin"); |
| | | 22 | | } |
| | | 23 | | } |
| | | 24 | | |
| | 0 | 25 | | export default function AuthCallback() { |
| | 0 | 26 | | return null; |
| | | 27 | | } |