Skip to content

Commit 0d10d9e

Browse files
committed
fix:intercepters for expired token
-when token is expired user should be redirected to login page
1 parent 1186659 commit 0d10d9e

File tree

5 files changed

+44
-7
lines changed

5 files changed

+44
-7
lines changed

package-lock.json

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
"@commitlint/config-conventional": "^19.2.2",
7171
"@testing-library/dom": "^10.2.0",
7272
"@types/jest": "^29.5.12",
73+
"@types/jwt-decode": "^3.1.0",
7374
"@types/node": "^20.14.8",
7475
"@types/react": "^18.2.66",
7576
"@types/react-dom": "^18.2.22",

src/pages/Wishes.tsx

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,7 @@ const BuyerWishesList: React.FC = () => {
7979
</p>
8080
);
8181
}
82-
if (!loggedInUserToken) {
83-
navigate("/login");
84-
}
8582

86-
if (loggedInUserToken && loggedInUser.roleId !== 1) {
87-
navigate("/");
88-
}
8983
return (
9084
<div className="w-full px-[2%] md:px-[4%]">
9185
<ToastContainer />

src/redux/reducers/wishListSlice.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,14 @@ void,
4444
});
4545
return response.data.wishes;
4646
} catch (error: any) {
47-
return rejectWithValue(error.message || "Failed to fetch wishes");
47+
if (axios.isAxiosError(error)) {
48+
const axiosError = error as AxiosError;
49+
return rejectWithValue(
50+
// @ts-ignore
51+
axiosError.response?.data?.message ?? "Unknown error occurred",
52+
);
53+
}
54+
return rejectWithValue("Unknown error occurred");
4855
}
4956
});
5057

src/utils/isTokenExpired.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import { decodeToken } from "react-jwt";
2+
3+
interface DecodedToken {
4+
exp: number;
5+
[key: string]: any;
6+
}
7+
8+
const isTokenExpired = (token: string | null) => {
9+
if (!token) {
10+
return true;
11+
}
12+
try {
13+
const decodedToken = decodeToken<DecodedToken>(token);
14+
const currentTime = Date.now() / 1000;
15+
if (decodedToken) {
16+
return decodedToken.exp < currentTime;
17+
}
18+
return false;
19+
} catch (error) {
20+
return true;
21+
}
22+
};
23+
24+
export default isTokenExpired;

0 commit comments

Comments
 (0)