route.ts (1588B)
1 import { User } from "@/lib/auth"; 2 import { cookies } from "next/headers"; 3 import { NextResponse } from "next/server"; 4 5 export async function POST(req: Request) { 6 const { openidToken, homeserverUrl, matrixId, openidExpiration } = await req.json(); 7 8 if (!openidToken) { 9 return NextResponse.json({ error: "OpenID token is required" }, { status: 400 }); 10 } 11 if (!homeserverUrl) { 12 return NextResponse.json({ error: "Homeserver URL is required" }, { status: 400 }); 13 } 14 if (!matrixId) { 15 return NextResponse.json({ error: "Matrix ID is required" }, { status: 400 }); 16 } 17 if (!openidExpiration) { 18 return NextResponse.json({ error: "OpenID expiration is required" }, { status: 400 }); 19 } 20 21 const user: User = { 22 matrixId: matrixId, 23 token: openidToken, 24 homeserverUrl: homeserverUrl, 25 openidExpiration: openidExpiration, 26 }; 27 28 const response = NextResponse.json(user); 29 response.cookies.set("d4all_session", JSON.stringify(user), { httpOnly: true, path: "/" }); 30 return response; 31 } 32 33 export async function GET() { 34 const session = (await cookies()).get("d4all_session")?.value; 35 36 if (!session) { 37 return NextResponse.json({ error: "No active session" }, { status: 401 }); 38 } 39 40 return NextResponse.json(JSON.parse(session)); 41 } 42 43 export async function DELETE(req: Request) { 44 const url = new URL(req.url); 45 const response = NextResponse.redirect(url.origin); 46 response.cookies.set("d4all_session", "", { httpOnly: true, path: "/", maxAge: 0 }); 47 48 return response; 49 }