diff --git a/src/App.jsx b/src/App.jsx index a9333bf..f876c62 100755 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,4 +1,4 @@ -// import Toaster from "./components/Helpers/Toaster"; +import Toaster from "./components/Helpers/Toaster"; import Routers from "./Routers"; import Default from "./components/Partials/Default"; @@ -7,7 +7,7 @@ function App() { <> - {/* */} + ); diff --git a/src/middleware/AuthRoute.jsx b/src/middleware/AuthRoute.jsx index f2f4c79..b3a05b3 100755 --- a/src/middleware/AuthRoute.jsx +++ b/src/middleware/AuthRoute.jsx @@ -1,26 +1,49 @@ import React, {useEffect} from "react"; -import { Navigate, Outlet, useNavigate } from "react-router-dom"; -// import { toast } from "react-toastify"; +import { Navigate, Outlet, useNavigate, useLocation } from "react-router-dom"; +import { toast } from "react-toastify"; const AuthRoute = ({ redirectPath = "/login", children }) => { const isLogin = localStorage.getItem("email"); const profile = localStorage.getItem("profile") const navigate = useNavigate(); + const { pathname } = useLocation(); - //FUNCTION TO EXPIRE SESSION AFETR 5 MINUTES + + //FUNCTION TO EXPIRE SESSION AFETR 5 MINUTES AND REDIRECT USER TO LOGIN PAGE const expireSession = () => { localStorage.removeItem("email"); localStorage.removeItem('session_token'); localStorage.removeItem('profile'); - // navigate("/login", { replace: true }); + localStorage.removeItem('member_id'); + localStorage.removeItem('member_uuid'); + localStorage.removeItem('status'); + navigate("/login", { replace: true }); // redirects user to login page after session expires }; + //FUNCTION TO REMIND USER OF EXPIRY TIME + const expireSessionReminder = () => { + toast.success("session is about to expire", { + icon: `🙂`, + }); + } + + useEffect(()=>{ - setTimeout(()=>{ + let sessionExpReminder = setTimeout(()=>{ //reminds user of session expiry after 4 mins 240000 + expireSessionReminder() + }, 240000) + + let timeForSessionExpiry = setTimeout(()=>{ //reminds user of session expiry after 4 mins 300000 expireSession() - }, 300000) //expires user login session after 5 minutes - },[]) + }, 300000) + + return ()=>{ // clears timeout side effect + clearTimeout(sessionExpReminder) + clearInterval(timeForSessionExpiry) + } + },[pathname]) + if (!isLogin || !profile || (typeof JSON.parse(profile) == 'object' && JSON.parse(profile).firstname == undefined)) { return ;