axios interseptor

PHOTO EMBED

Wed Jul 30 2025 03:44:10 GMT+0000 (Coordinated Universal Time)

Saved by @Ajay1212

import axios from 'axios';
import { logout } from '../middelware/auth';

export const LOGIN_TOKEN = 'token';
export const keys = [LOGIN_TOKEN];

  // export const BASE_URL = 'http://192.168.1.29:8888/.netlify/functions/api/';
export const BASE_URL = 'https://diamand-api.netlify.app/.netlify/functions/api/';
// export const BASE_URL = 'http://192.168.2.36:8000/api/';
const apiAxios = axios.create({
  baseURL: BASE_URL,
  headers: {
    Accept: 'application/json',
    'Content-type': 'application/json',
  },
});
const uploadImageAxiosApi = axios.create({
  baseURL: BASE_URL,
  headers: {
    Accept: 'application/json',    'content-type': 'multipart/form-data',
  },
});

export const getToken = async () => {
    return await localStorage.getItem(LOGIN_TOKEN);
};

export const setToken = async (token:any) => {
    // apiAxios.defaults.headers.common["Authorization"] = `Bearer ${token}`;
    return await localStorage.setItem(LOGIN_TOKEN, token);
  };

apiAxios.interceptors.request.use(async (config) => {
  const token = await getToken();

  if (token) {
    config.headers.Authorization = ` ${token}`;
  }
  return config;
});

uploadImageAxiosApi.interceptors.request.use(async (config) => {
  const token = await getToken();

  if (token) {
    config.headers.Authorization = ` ${token}`;
  }

  return config;
});
 const axiosError = (setIsLoggedIn:any)=>{
   apiAxios.interceptors.response.use(
    function (response) {
      return response;
    },
    function (error) {
      if (error && error.response && error.response.status === 401) {
        logout()
        setIsLoggedIn(false)
      }
      return Promise.reject(error);
    }
  );
  uploadImageAxiosApi.interceptors.response.use(
    function (response) {
      return response;
    },
    function (error) {
      if (error && error.response && error.response.status === 401) {
        logout()
        setIsLoggedIn(false)
      }
      return Promise.reject(error);
    }
  );
}
export {uploadImageAxiosApi , axiosError}

export default apiAxios;

////////////////////////////////////////////////

middlewer

=========
// auth.js

import UserService from "../Services/UserService";

// Constants
const TOKEN_KEY = 'token';

// Function to set the user's authentication token in AsyncStorage
export const setAuthToken = async (token:any) => {
  try {
    await localStorage.setItem(TOKEN_KEY, token);
  } catch (error) {
    console.error('Error setting auth token:', error);
  }
};

// Function to get the user's authentication token from localStorage
export const getAuthToken = async () => {
  try {
    const token = await localStorage.getItem(TOKEN_KEY);
    return token;
  } catch (error) {
    console.error('Error getting auth token:', error);
    return null;
  }
};

// Function to remove the user's authentication token from localStorage
export const removeAuthToken = async () => {
  try {
    await localStorage.removeItem(TOKEN_KEY);
  } catch (error) {
    console.error('Error removing auth token:', error);
  }
};

// Function to check if the user is authenticated
export const isAuthenticated = async () => {
  const token = await getAuthToken();
  return !!token; // Returns true if the token exists, indicating the user is authenticated
};

// Function to perform user login
export const login = async (values:any) => {
  try {
    const response = await UserService.userLogin(values)
    if (response.status === 200) {
      const token = response.data.token; 
    //   const userId = response.data.user.id;
      await setAuthToken(token);
    //   await localStorage.setItem('userId',userId)
      return { success: true, data: response.data };
    } else {
      console.error('Login failed:', response.data);
      return { success: false, error: response.data };
    }
  } catch (error) {
    console.error('Error during login:', error);
    return false; 
  }
};

// Function to perform user logout
export const logout = async () => {
  await removeAuthToken();
  await localStorage.removeItem('userId');
};


////////////////////////////////////////

import axiosApi,{uploadImageAxiosApi} from "../utils/axiosapi"


const UserService = {

    userLogin: (data:any) => axiosApi.post('user/password-login', data).then((resp:any) => {
        return resp
    }).catch((error:any) => {
        return error.response;
    }),

    //product list
    fetchProductList: ({data,type}:any) => axiosApi.get(`${type}/`,data).then((resp: any) => {
        return resp
    }),

};
export default UserService;
  
content_copyCOPY