From 4cee6774f7bce7f89914b66dc4d202b308bf51af Mon Sep 17 00:00:00 2001 From: Max Chopart Date: Fri, 3 May 2024 19:24:23 +0200 Subject: [PATCH] [New #126] Add axios client --- src/services/utils/axiosUtils.tsx | 25 +++++++++++++++---------- src/utils/SecurityUtils.ts | 19 +++++++++++++++++++ src/utils/constants.tsx | 6 ++++++ 3 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 src/utils/SecurityUtils.ts diff --git a/src/services/utils/axiosUtils.tsx b/src/services/utils/axiosUtils.tsx index 2eddf69f..ec8c3036 100644 --- a/src/services/utils/axiosUtils.tsx +++ b/src/services/utils/axiosUtils.tsx @@ -1,9 +1,12 @@ import axios from "axios"; import { appHistory } from "@components/routes/AppRoutes"; -import { ENVVariable, ROUTES } from "@utils/constants"; +import { ENVVariable, HttpHeaders, ROUTES } from "@utils/constants"; +import { isUsingOidcAuth } from "@utils/OidcUtils"; +import { getOidcToken } from "@utils/SecurityUtils"; const axiosClient = axios.create({ baseURL: ENVVariable.API_URL, + withCredentials: true, }); axiosClient.interceptors.response.use( @@ -20,14 +23,16 @@ axiosClient.interceptors.response.use( export const axiosSource = axios.CancelToken.source(); -axios.interceptors.request.use( - (request) => { - request.cancelToken = axiosSource.token; - return request; - }, - (error) => { - return Promise.reject(error); - }, -); +axiosClient.interceptors.request.use((reqConfig) => { + if (!isUsingOidcAuth()) { + return reqConfig; + } + if (!reqConfig.headers) { + // @ts-ignore + reqConfig.headers = {}; + } + reqConfig.headers[HttpHeaders.AUTHORIZATION] = `Bearer ${getOidcToken().access_token}`; + return reqConfig; +}); export default axiosClient; diff --git a/src/utils/SecurityUtils.ts b/src/utils/SecurityUtils.ts new file mode 100644 index 00000000..720e1faf --- /dev/null +++ b/src/utils/SecurityUtils.ts @@ -0,0 +1,19 @@ +import { getOidcIdentityStorageKey } from "./OidcUtils"; +import { ROLE } from "./constants.js"; + +export function getOidcToken() { + const identityData = sessionStorage.getItem(getOidcIdentityStorageKey()); + return identityData ? JSON.parse(identityData) : {}; +} + +export function saveOidcToken(token) { + sessionStorage.setItem(getOidcIdentityStorageKey(), JSON.stringify(token)); +} + +export function clearToken() { + sessionStorage.removeItem(getOidcIdentityStorageKey()); +} + +export function isAdmin(currentUser) { + return currentUser.role === ROLE.ADMIN; +} diff --git a/src/utils/constants.tsx b/src/utils/constants.tsx index 62174cd0..153494f8 100644 --- a/src/utils/constants.tsx +++ b/src/utils/constants.tsx @@ -78,3 +78,9 @@ export const ROLE = { ADMIN: "Admin", REGULAR_USER: "Regular User", }; + +export const HttpHeaders = { + AUTHORIZATION: "Authorization", + CONTENT_DISPOSITION: "content-disposition", + LINK: "link", +};