2025-12-03 21:56:50 +00:00
|
|
|
export class CsrfService {
|
|
|
|
|
private static instance: CsrfService;
|
|
|
|
|
private csrfToken: string | null = null;
|
|
|
|
|
|
2025-12-13 02:34:34 +00:00
|
|
|
private constructor() {}
|
2025-12-03 21:56:50 +00:00
|
|
|
|
|
|
|
|
public static getInstance(): CsrfService {
|
|
|
|
|
if (!CsrfService.instance) {
|
|
|
|
|
CsrfService.instance = new CsrfService();
|
|
|
|
|
}
|
|
|
|
|
return CsrfService.instance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async refreshCsrfToken(): Promise<void> {
|
2025-12-13 02:34:34 +00:00
|
|
|
// Placeholder: fetch from backend if needed
|
|
|
|
|
// this.csrfToken = ...
|
2025-12-03 21:56:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public getCsrfHeaders(): Record<string, string> {
|
2025-12-13 02:34:34 +00:00
|
|
|
if (!this.csrfToken) {
|
2025-12-03 21:56:50 +00:00
|
|
|
return {};
|
|
|
|
|
}
|
|
|
|
|
return {
|
2025-12-13 02:34:34 +00:00
|
|
|
'X-CSRF-Token': this.csrfToken,
|
2025-12-03 21:56:50 +00:00
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public clearCsrfToken(): void {
|
|
|
|
|
this.csrfToken = null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export const csrfService = CsrfService.getInstance();
|