import { URLS } from '../data/urls'; import { NextResponse } from 'next/server'; export async function POST(req: Request) { const regexText1 = /name=['|"]csrfmiddlewaretoken['|"] value=['|"]\w+/gi; const regexText2 = /name=['|"]csrfmiddlewaretoken['|"] value=['|"]/gi; let sessionCookie; if (req.headers.get('osessionid')) { sessionCookie = `osessionid=${req.headers.get('osessionid')}`; } const requestLogoutStep1 = await fetch(URLS.user.logout, { method: 'POST', headers: { Cookie: `${sessionCookie}` } }); const responseHtml = await requestLogoutStep1.text(); const csrfTokenMatch = responseHtml.match(regexText1); const csrfToken = csrfTokenMatch?.[0].replace(regexText2, '') || ''; const formData = new URLSearchParams(); formData.append('csrfmiddlewaretoken', csrfToken); try { const requestLogoutStep2 = await fetch(URLS.user.logout, { method: 'POST', headers: { Cookie: `csrftoken=${csrfToken}; ${sessionCookie}` }, body: formData }); return NextResponse.json(requestLogoutStep2, { status: requestLogoutStep2.status }); } catch (error) { return NextResponse.json(error, { status: 500 }); } }