Skip to content
Snippets Groups Projects
useAxiosInterceptor.tsx 769 B
import axios from 'axios';
import { signOut } from 'next-auth/react';
import { useEffect } from 'react';

const useAxiosInterceptor = () => {
  useEffect(() => {
    const responseInterceptor = axios.interceptors.response.use(
      (response) => response,
      (error) => {
        if (error.response && error.response.status === 401) {
          const currentUrl = window.location.href;
          signOut({
            callbackUrl: `/api/auth/signin?error=SessionRequired&callbackUrl=${encodeURIComponent(
              currentUrl,
            )}`,
          });
        }
        return Promise.reject(error);
      },
    );

    return () => {
      axios.interceptors.response.eject(responseInterceptor);
    };
  }, []);
};

export default useAxiosInterceptor;