CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
// UX-10: Zugriff auf die DMS-Endpunkte mit dem Core-Modul-Token (Bearer); Standard ist der Token-Modus,
|
|
// NEXT_PUBLIC_AUTH_MODE=caller der abschaltbare Uebergangsmodus (ohne Token, wie vor UX-10).
|
|
import { createSession, redirectToLogin, type Session } from "@nexarch/shl";
|
|
|
|
export function authMode(): "token" | "caller" {
|
|
return process.env.NEXT_PUBLIC_AUTH_MODE === "caller" ? "caller" : "token";
|
|
}
|
|
|
|
let session: Session | undefined;
|
|
|
|
export function getSession(): Session {
|
|
if (!session) {
|
|
const coreBase = process.env.NEXT_PUBLIC_CORE_API_BASE;
|
|
if (!coreBase) {
|
|
throw new Error("NEXT_PUBLIC_CORE_API_BASE ist nicht gesetzt (Umgebungsvariable erforderlich)");
|
|
}
|
|
session = createSession({
|
|
coreBase,
|
|
onLoginRequired: () => redirectToLogin(process.env.NEXT_PUBLIC_LOGIN_URL),
|
|
});
|
|
}
|
|
return session;
|
|
}
|
|
|
|
export function resetSessionForTests(): void {
|
|
session = undefined;
|
|
}
|
|
|
|
export function apiFetch(input: string, init?: RequestInit): Promise<Response> {
|
|
if (authMode() === "caller") return fetch(input, init);
|
|
return getSession().fetch(input, init);
|
|
}
|