diff --git a/.env b/.env index 9f61bae..8db0aa6 100644 --- a/.env +++ b/.env @@ -19,4 +19,5 @@ REACT_APP_SITE_CONTACT_US=https://www.float.sg/contact REACT_APP_SITE_TERMS=https://www.float.sg/terms REACT_APP_SITE_ABOUT_US=https://www.float.sg/about -REACT_APP_LOGIN_ERROR_TIMEOUT=5000 \ No newline at end of file +REACT_APP_LOGIN_ERROR_TIMEOUT=5000 +REACT_APP_SESSION_TIMEOUT=300000 diff --git a/src/_metronic/layout/components/sidebar/SidebarLogo.tsx b/src/_metronic/layout/components/sidebar/SidebarLogo.tsx index c4194fe..b608515 100644 --- a/src/_metronic/layout/components/sidebar/SidebarLogo.tsx +++ b/src/_metronic/layout/components/sidebar/SidebarLogo.tsx @@ -22,19 +22,19 @@ const SidebarLogo = () => { {config.layoutType === 'dark-sidebar' ? ( Logo ) : ( <> Logo Logo diff --git a/src/app/modules/auth/core/Auth.tsx b/src/app/modules/auth/core/Auth.tsx index 77a7ef2..33a2b03 100644 --- a/src/app/modules/auth/core/Auth.tsx +++ b/src/app/modules/auth/core/Auth.tsx @@ -8,6 +8,7 @@ import { Dispatch, SetStateAction, } from 'react' +import {useLocation} from 'react-router-dom' import {LayoutSplashScreen} from '../../../../_res/layout/core' import {AuthModel, UserModel} from './_models' import * as authHelper from './AuthHelpers' @@ -61,11 +62,17 @@ const AuthProvider: FC = ({children}) => { } const AuthInit: FC = ({children}) => { + const pathname = useLocation().pathname const {auth, logout, setCurrentUser} = useAuth() const didRequest = useRef(false) const [showSplashScreen, setShowSplashScreen] = useState(true) // We should request user by authToken (IN OUR EXAMPLE IT'S API_TOKEN) before rendering the application useEffect(() => { + // function to expire session after 5 mins + let logoutSession = setTimeout(()=>{ //expire session after 5 mins + logout() + }, Number(process.env.REACT_APP_SESSION_TIMEOUT)) + const requestUser = async (apiToken: string) => { try { if (!didRequest.current) { @@ -96,7 +103,11 @@ const AuthInit: FC = ({children}) => { setShowSplashScreen(false) } // eslint-disable-next-line - }, []) + + return ()=>{ // clears session timeout side effect + clearInterval(logoutSession) + } + }, [pathname]) return showSplashScreen ? : <>{children} }