From 4ca28fd910f8c141994e2b3d391db344d94e9c91 Mon Sep 17 00:00:00 2001 From: Swapnil Bendal <84583651+Swapnil155@users.noreply.github.com> Date: Fri, 6 Dec 2024 20:25:12 +0530 Subject: [PATCH] [untested] - code checkout in remote --- src/App.jsx | 4 +- src/Layout/DefaultLayout.jsx | 18 ++++---- src/Services/token.serivce.js | 82 ++++++++++------------------------- 3 files changed, 34 insertions(+), 70 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 19d0e53..30de782 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -63,8 +63,8 @@ const App = () => { path="/*" element={ // isOnline ? ( - // isAuthenticate || isAuthenticatedInCookie === "true" ? ( - localStorage.getItem('accessToken') && localStorage.getItem('refreshToken') ? ( + isAuthenticate || isAuthenticatedInCookie === "true" ? ( + // localStorage.getItem('accessToken') && localStorage.getItem('refreshToken') ? ( // true ? ( ) : ( diff --git a/src/Layout/DefaultLayout.jsx b/src/Layout/DefaultLayout.jsx index 7afc70a..69d8659 100644 --- a/src/Layout/DefaultLayout.jsx +++ b/src/Layout/DefaultLayout.jsx @@ -104,15 +104,15 @@ const DashboardLayout = ({ isOnline }) => { const { data, refetch } = useProfileQuery(); - useEffect(() => { - if ( - !localStorage.getItem("accessToken") && - !localStorage.getItem("refreshToken") - ) { - logOutHandler(); - return navigate("/login"); - } - }, []); + // useEffect(() => { + // if ( + // !localStorage.getItem("accessToken") && + // !localStorage.getItem("refreshToken") + // ) { + // logOutHandler(); + // return navigate("/login"); + // } + // }, []); useEffect(() => { const savedIndex = localStorage.getItem("openAccordionIndex"); diff --git a/src/Services/token.serivce.js b/src/Services/token.serivce.js index 639fdf8..2cfd56f 100644 --- a/src/Services/token.serivce.js +++ b/src/Services/token.serivce.js @@ -1,83 +1,55 @@ import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react"; -// Define a base query function with RTK Query -// export const baseQuery = fetchBaseQuery({ -// baseUrl: 'https://sprint4.tanami.betadelivery.com/api/v1', -// prepareHeaders: (headers) => { -// const token = localStorage.getItem('accessToken'); -// if (token) { -// headers.set('x-auth-token', `${token}`); -// } -// return headers; -// }, -// }); - // Define a base query function with token refresh logic export const baseQuery = async (args, api, extraOptions) => { - let result = await fetchBaseQuery({ + let { data, error, } = await fetchBaseQuery({ baseUrl: import.meta.env.VITE_BAS_URL, + credentials: 'include', prepareHeaders: (headers) => { - const token = localStorage.getItem("accessToken"); - if (token) { - headers.set("x-auth-token", token); - } + headers.set('Content-Type', 'application/json',); return headers; }, })(args, api, extraOptions); - if (result.error && result.error.status === 403) { - // Handle token refresh - const refreshToken = localStorage.getItem("refreshToken"); - console.log(refreshToken); - if (refreshToken) { + console.log(data); + + + if (error) { + if (error.status === 403) { try { - const refreshResult = await fetchBaseQuery({ + const { data } = await fetchBaseQuery({ baseUrl: import.meta.env.VITE_BAS_URL, })( { url: "/auth/user/regenerate-token", method: "POST", - body: { refreshToken }, }, api, extraOptions ); - if (refreshResult.data) { - // Save new tokens - localStorage.setItem("accessToken", refreshResult?.data?.data?.access?.token); - // localStorage.setItem("role", refreshResult?.data?.data?.role); - // console.log(refreshResult?.data?.data?.role); - - - // Retry the original request with the new token - result = await fetchBaseQuery({ + if (data) { + return await fetchBaseQuery({ baseUrl: import.meta.env.VITE_BAS_URL, + credentials: 'include', prepareHeaders: (headers) => { - const token = localStorage.getItem("accessToken"); - if (token) { - headers.set("x-auth-token", token); - } + headers.set('Content-Type', 'application/json',); return headers; - }, + } })(args, api, extraOptions); - }else{ - - console.log('refresh failed'); - localStorage.clear(); - window.location.href = '/login'; // Redirect to login page - - } + } } catch (err) { console.error("Failed to refresh token:", err); localStorage.clear(); window.location.href = '/login'; // Redirect to login page - // Handle refresh failure (e.g., redirect to login) } } } - - return result; + else if (error.status === 401) { + localStorage.clear(); + window.location.href = '/login'; + } + return data; }; // Create an RTK Query API slice @@ -85,27 +57,23 @@ export const apiSlice = createApi({ reducerPath: "api", baseQuery: baseQuery, endpoints: (builder) => ({ + login: builder.mutation({ query: (credentials) => ({ url: "/auth/admin", method: "POST", body: credentials, }), - async onQueryStarted(arg, { dispatch, queryFulfilled }) { + async onQueryStarted(arg, { queryFulfilled }) { try { const { data } = await queryFulfilled; - // Store tokens in local storage - localStorage.setItem("accessToken", data?.data?.access?.token); - - localStorage.setItem("refreshToken", data?.data?.refresh?.token); - // localStorage.setItem('refreshTokenExp', data?.data?.refresh?.expires); - localStorage.setItem("accessTokenExp", data?.data?.access?.expires); localStorage.setItem("role", data?.data?.role); } catch (error) { console.error("Login failed:", error); } }, }), + refreshToken: builder.mutation({ query: (refreshToken) => ({ url: "/auth/user/regenerate-token", @@ -114,7 +82,6 @@ export const apiSlice = createApi({ }), }), - logout: builder.mutation({ query: () => ({ url: "/auth/admin/logout", @@ -122,9 +89,6 @@ export const apiSlice = createApi({ }), }), - - - }), });