57 lines
1.6 KiB
TypeScript
57 lines
1.6 KiB
TypeScript
import axios, { AxiosResponse } from "axios";
|
|
|
|
export async function login(): Promise<string> {
|
|
try {
|
|
console.log("Login naar:", `https://servicelayer.logres.nl:50000/b1s/v2/Login`);
|
|
|
|
const response = await axios.post(
|
|
"https://servicelayer.logres.nl:50000/b1s/v2/Login",
|
|
{
|
|
CompanyDB: "DEMONLJR",
|
|
UserName: "manager",
|
|
Password: "manager",
|
|
},
|
|
{
|
|
timeout: 10000,
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
validateStatus: () => true,
|
|
}
|
|
);
|
|
|
|
console.log("STATUS:", response.status);
|
|
console.log("DATA:", response.data);
|
|
console.log("COOKIES:", response.headers["set-cookie"]);
|
|
|
|
const setCookie = extractCookie(response);
|
|
|
|
if (!setCookie) {
|
|
throw new Error("Geen set-cookie header ontvangen van SAP Business One");
|
|
}
|
|
|
|
return Array.isArray(setCookie) ? setCookie.join("; ") : setCookie;
|
|
} catch (error: unknown) {
|
|
console.error("MESSAGE:", (error as Error).message);
|
|
console.error("CODE:", (error as { code: string }).code);
|
|
|
|
if ((error as { response: unknown }).response) {
|
|
console.error("STATUS:", (error as { response: { status: number } }).response.status);
|
|
console.error("DATA:", (error as { response: { data: unknown } }).response.data);
|
|
}
|
|
|
|
throw new Error((error as Error).message || "Login failed");
|
|
}
|
|
}
|
|
|
|
function extractCookie(response: AxiosResponse): string | null {
|
|
const setCookie = response.headers['set-cookie'];
|
|
|
|
if (!setCookie) {
|
|
return null;
|
|
}
|
|
|
|
return setCookie
|
|
.map((cookie: string) => cookie.split(";")[0])
|
|
.join("; ");
|
|
} |