File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import axios from "axios" ;
22
3- import { getAccessToken } from "./auth" ;
3+ import { clearTokens , getAccessToken } from "./auth" ;
44
55// use env URL to call API
66const api = axios . create ( { baseURL : process . env . NEXT_PUBLIC_BACKEND_URL } ) ;
77
8- // for login, register interceptor to attach bearer token
8+ // request interceptor attaches bearer token (logins & non public pages)
99api . interceptors . request . use ( ( config ) => {
1010 const token = getAccessToken ( ) ;
1111 if ( token ) {
@@ -14,4 +14,22 @@ api.interceptors.request.use((config) => {
1414 return config ;
1515} ) ;
1616
17+ // response interceptor redirects to get new bearer token (expired tokens)
18+ api . interceptors . response . use (
19+ ( response ) => {
20+ return response ;
21+ } ,
22+ ( error ) => {
23+ if ( error . response ?. status === 401 ) {
24+ clearTokens ( ) ;
25+
26+ // Redirect to login page
27+ if ( typeof window !== "undefined" ) {
28+ window . location . href = "/login" ;
29+ }
30+ }
31+ return Promise . reject ( error ) ;
32+ } ,
33+ ) ;
34+
1735export default api ;
You can’t perform that action at this time.
0 commit comments