TelegramBot/webui/app/api/auth/logout/route.ts

34 lines
1 KiB
TypeScript
Executable file

import { NextRequest, NextResponse } from "next/server";
import { invalidateSession } from "@/lib/auth";
import { SESSION_COOKIE_NAME } from "@/lib/auth-constants";
export async function POST(request: NextRequest) {
try {
const cookieToken = request.cookies.get(SESSION_COOKIE_NAME)?.value;
const authHeader = request.headers.get('authorization');
const bearerToken = authHeader?.startsWith('Bearer ') ? authHeader.slice(7) : null;
const sessionToken = bearerToken || cookieToken;
if (sessionToken) {
await invalidateSession(sessionToken);
}
const response = NextResponse.json({ success: true });
response.cookies.set(SESSION_COOKIE_NAME, '', {
httpOnly: true,
secure: process.env.NODE_ENV === "production",
sameSite: "lax",
expires: new Date(0),
path: "/",
});
return response;
} catch (error) {
console.error("Error in logout API:", error);
return NextResponse.json({
error: "Internal server error"
}, { status: 500 });
}
}