import axios from "axios"; import type { NextRequest } from "next/server"; import { NextResponse } from "next/server"; import { getEnvs } from "@/libs/environment/env"; import { getBaseUrl } from "@/libs/servers/get-url"; export async function POST(request: NextRequest) { const baseUrl = getBaseUrl(request); const envs = getEnvs(baseUrl); const requestBody = await request.json(); const body = { grant_type: "client_credentials", client_id: envs.clientId, client_secret: envs.clientSecret, scope: envs.clientScope, username: requestBody.username, password: requestBody.password, }; const clientTokenCookie = request.cookies.get("client-token"); if (!clientTokenCookie?.value || clientTokenCookie.value === "") { return NextResponse.json({ error: "Invalid user token" }, { status: 401 }); } try { const response = await axios.post( `${envs.wlAuthUrl}/api/clientaccount/login`, body, { headers: { "Content-Type": "application/x-www-form-urlencoded", Accept: "*/*", Referer: baseUrl, Authorization: `Bearer ${clientTokenCookie.value}`, }, }, ); if (response.data.access_token) { return NextResponse.json(response.data, { status: 200 }); } return NextResponse.json(response.data, { status: 400 }); } catch (error) { return NextResponse.json({}, { status: 400 }); } }