src/app/api/auth/logout/route.ts
Annotation non disponible
Lance npm run annotate (nécessite ANTHROPIC_API_KEY dans .env.local) pour générer une annotation française par Claude Haiku 4.5.
2 exports
POSTGET
Code source· typescript
import { getSession } from "@/lib/auth/session";
import { NextRequest, NextResponse } from "next/server";
async function handleLogout(req: NextRequest) {
const session = await getSession();
const role = session?.role ?? null;
const baseDomain = process.env.DOMAIN || "wari.pro";
const isProduction = process.env.NODE_ENV === "production";
let redirectUrl = "https://" + baseDomain;
if (role === "CLIENT") {
const redirect = req.nextUrl.searchParams.get("redirect");
if (redirect && /^[a-z0-9-]+$/.test(redirect)) {
redirectUrl = "https://" + redirect + "." + baseDomain;
}
} else if (role === "TENANT_ADMIN") {
redirectUrl = "https://" + baseDomain + "/admin/login";
} else if (role === "SUPER_ADMIN") {
redirectUrl = "https://" + baseDomain + "/superadmin/login";
}
const cookieValue = isProduction
? "superapp_session=; Path=/; Max-Age=0; HttpOnly; SameSite=Lax; Secure; Domain=.wari.pro"
: "superapp_session=; Path=/; Max-Age=0; HttpOnly; SameSite=Lax";
const html = `<!DOCTYPE html><html><head><meta charset="utf-8"><script>window.location.replace("${redirectUrl}")</script></head><body></body></html>`;
const response = new NextResponse(html, {
status: 200,
headers: { "Content-Type": "text/html" },
});
response.headers.set("Set-Cookie", cookieValue);
return response;
}
export async function POST(req: NextRequest) { return handleLogout(req); }
export async function GET(req: NextRequest) { return handleLogout(req); }
import { getSession } from "@/lib/auth/session";
import { NextRequest, NextResponse } from "next/server";
async function handleLogout(req: NextRequest) {
const session = await getSession();
const role = session?.role ?? null;
const baseDomain = process.env.DOMAIN || "wari.pro";
const isProduction = process.env.NODE_ENV === "production";
let redirectUrl = "https://" + baseDomain;
if (role === "CLIENT") {
const redirect = req.nextUrl.searchParams.get("redirect");
if (redirect && /^[a-z0-9-]+$/.test(redirect)) {
redirectUrl = "https://" + redirect + "." + baseDomain;
}
} else if (role === "TENANT_ADMIN") {
redirectUrl = "https://" + baseDomain + "/admin/login";
} else if (role === "SUPER_ADMIN") {
redirectUrl = "https://" + baseDomain + "/superadmin/login";
}
const cookieValue = isProduction
? "superapp_session=; Path=/; Max-Age=0; HttpOnly; SameSite=Lax; Secure; Domain=.wari.pro"
: "superapp_session=; Path=/; Max-Age=0; HttpOnly; SameSite=Lax";
const html = `<!DOCTYPE html><html><head><meta charset="utf-8"><script>window.location.replace("${redirectUrl}")</script></head><body></body></html>`;
const response = new NextResponse(html, {
status: 200,
headers: { "Content-Type": "text/html" },
});
response.headers.set("Set-Cookie", cookieValue);
return response;
}
export async function POST(req: NextRequest) { return handleLogout(req); }
export async function GET(req: NextRequest) { return handleLogout(req); }