UNPKG

nodemda-js-react-mantine

Version:

NodeMDA plugin to React frontend using Mantine UI components

63 lines (53 loc) 1.83 kB
import axios from 'axios'; const API_URL = process.env.REACT_APP_API_URL || '/api/v1'; const apiClient = axios.create({ baseURL: API_URL, }); // Request interceptor to add JWT token to headers apiClient.interceptors.request.use( (config) => { const token = sessionStorage.getItem('token'); // or localStorage.getItem('token') if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => { return Promise.reject(error); } ); // Response interceptor to handle errors globally apiClient.interceptors.response.use( (response) => { return response; }, (error) => { if (error.response && error.response.status === 401) { // Unauthorized - clear the token from sessionStorage apiClient.clearAuthToken(); // Optionally, redirect to the login page window.location.href = '/login'; } return Promise.reject(error); } ); // Method to set the JWT token in sessionStorage and attach it to future requests apiClient.setAuthToken = (token) => { sessionStorage.setItem('token', token); apiClient.defaults.headers.common['Authorization'] = `Bearer ${token}`; }; // Method to clear the JWT token from sessionStorage and remove it from future requests apiClient.clearAuthToken = () => { sessionStorage.removeItem('token'); delete apiClient.defaults.headers.common['Authorization']; }; // Method to clear the Authorization header for specific requests apiClient.clearAuthHeader = () => { delete apiClient.defaults.headers.common['Authorization']; }; // Method to check if the user is authenticated apiClient.isAuthenticated = () => { const token = sessionStorage.getItem('token'); // or localStorage.getItem('token') return !!token; // Returns true if token exists, otherwise false }; export default apiClient;