frontend/src/http/csrf.ts (29 lines of code) (raw):
import {RequestParams} from './executeRequest'
export const requestWithCSRF = async (
internalRequest: (...params: RequestParams) => Promise<any>,
...params: RequestParams
) => {
const [method, url, body, headers, appConfig] = params
if (method === 'get') {
return internalRequest(...params)
}
const {data} = (await internalRequest(
'get',
'/csrf',
null,
{},
appConfig,
)) as {
data: {csrf_token: string}
}
const tokenHeader = {
'X-CSRF-Token': data.csrf_token,
}
return internalRequest(
method,
url,
body,
{...headers, ...tokenHeader},
appConfig,
)
}