bcae59626f
Build & Push Docker Image / build (push) Successful in 2m16s
- Synchronizer token stored in session; GET /auth/csrf to obtain it - csrfProtection middleware requires X-CSRF-Token on non-safe methods - customFetch injects the header via setCsrfTokenGetter - toolrate boot loads token; reload after local login (session regenerate) - OpenAPI GET /auth/csrf + CsrfToken schema, orval regenerated
27 lines
585 B
TypeScript
27 lines
585 B
TypeScript
import { setCsrfTokenGetter } from "@workspace/api-client-react";
|
|
|
|
let token: string | null = null;
|
|
|
|
setCsrfTokenGetter(() => token);
|
|
|
|
export function getCsrfToken(): string | null {
|
|
return token;
|
|
}
|
|
|
|
export async function loadCsrfToken(): Promise<string | null> {
|
|
try {
|
|
const res = await fetch(`/api/auth/csrf`, {
|
|
credentials: "include",
|
|
});
|
|
if (!res.ok) {
|
|
token = null;
|
|
return null;
|
|
}
|
|
const data = (await res.json()) as { token?: string };
|
|
token = data.token ?? null;
|
|
return token;
|
|
} catch {
|
|
token = null;
|
|
return null;
|
|
}
|
|
} |