Refactor BFF Package Structure #64
@ -11,6 +11,32 @@ const includeCredentials: Middleware = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function getCookie(name: string): string | undefined {
|
||||||
|
const match = document.cookie.match(new RegExp(`(^| )${name}=([^;]+)`));
|
||||||
|
return match ? match[2] : undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
const includeCsrfToken: Middleware = {
|
||||||
|
onRequest({ request }) {
|
||||||
|
const method = request.method.toUpperCase();
|
||||||
|
if (method === "POST" || method === "PUT" || method === "DELETE") {
|
||||||
|
const csrfToken = getCookie("XSRF-TOKEN");
|
||||||
|
if (csrfToken) {
|
||||||
|
request.headers.set("X-XSRF-TOKEN", csrfToken);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return request;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const includeAcceptLanguage: Middleware = {
|
||||||
|
onRequest({ request }) {
|
||||||
|
const language = navigator.language.split("-")[0] || "en";
|
||||||
|
request.headers.set("Accept-Language", language);
|
||||||
|
return request;
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
const initiateAuthorizationOnUnauthorized: Middleware = {
|
const initiateAuthorizationOnUnauthorized: Middleware = {
|
||||||
onResponse({ response }) {
|
onResponse({ response }) {
|
||||||
if (response.status === 401) {
|
if (response.status === 401) {
|
||||||
@ -24,6 +50,8 @@ const initiateAuthorizationOnUnauthorized: Middleware = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
client.use(includeCredentials);
|
client.use(includeCredentials);
|
||||||
|
client.use(includeCsrfToken);
|
||||||
|
client.use(includeAcceptLanguage);
|
||||||
client.use(initiateAuthorizationOnUnauthorized);
|
client.use(initiateAuthorizationOnUnauthorized);
|
||||||
|
|
||||||
export function useBackend() {
|
export function useBackend() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user