Skip to content

Commit

Permalink
[New #126] Add axios client
Browse files Browse the repository at this point in the history
  • Loading branch information
LaChope committed May 13, 2024
1 parent 214065a commit 4cee677
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 10 deletions.
25 changes: 15 additions & 10 deletions src/services/utils/axiosUtils.tsx
Original file line number Diff line number Diff line change
@@ -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(
Expand All @@ -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;
19 changes: 19 additions & 0 deletions src/utils/SecurityUtils.ts
Original file line number Diff line number Diff line change
@@ -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;
}
6 changes: 6 additions & 0 deletions src/utils/constants.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,3 +78,9 @@ export const ROLE = {
ADMIN: "Admin",
REGULAR_USER: "Regular User",
};

export const HttpHeaders = {
AUTHORIZATION: "Authorization",
CONTENT_DISPOSITION: "content-disposition",
LINK: "link",
};

0 comments on commit 4cee677

Please sign in to comment.