Logs user out after 5 mins #11

Merged
ameye merged 1 commits from logout_timeout into master 2023-04-18 08:25:16 +00:00
2 changed files with 14 additions and 2 deletions
+2 -1
View File
@@ -17,4 +17,5 @@ REACT_APP_THEME_API_URL=https://preview.keenthemes.com/theme-api/api
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_SITE_ABOUT_US=https://www.float.sg/about
REACT_APP_SESSION_TIMEOUT=300000
+12 -1
View File
@@ -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<WithChildren> = ({children}) => {
}
const AuthInit: FC<WithChildren> = ({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<WithChildren> = ({children}) => {
setShowSplashScreen(false)
}
// eslint-disable-next-line
}, [])
return ()=>{ // clears session timeout side effect
clearInterval(logoutSession)
}
}, [pathname])
return showSplashScreen ? <LayoutSplashScreen /> : <>{children}</>
}