[untested] - code checkout in remote

This commit is contained in:
Swapnil Bendal
2024-12-06 20:25:12 +05:30
parent 88dc9d14fe
commit 4ca28fd910
3 changed files with 34 additions and 70 deletions

View File

@@ -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 ? (
<DefaultLayout isOnline={isOnline} />
) : (

View File

@@ -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");

View File

@@ -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({
}),
}),
}),
});