Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 77532b6236 | |||
| bdb69ae30f | |||
| 57e6d17e3f | |||
| 0d20792924 | |||
| 55d1b5cbea | |||
| 94f2354785 | |||
| 2ae9b73613 | |||
| accace3f60 |
@@ -17,4 +17,7 @@ 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_LOGIN_ERROR_TIMEOUT=5000
|
||||
REACT_APP_SESSION_TIMEOUT=300000
|
||||
|
||||
@@ -17,7 +17,7 @@ const AuthLayout = () => {
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<div className='d-flex flex-column flex-lg-row flex-column-fluid h-100'>
|
||||
<div className='d-flex flex-column flex-lg-row flex-column-fluid overflow-auto' style={{minHeight: '100vh'}}>
|
||||
{/* begin::Body */}
|
||||
<div className='d-flex flex-column flex-lg-row-fluid w-lg-50 p-10 order-2 order-lg-1'>
|
||||
{/* begin::Form */}
|
||||
|
||||
@@ -50,12 +50,6 @@ export function ForgotPassword() {
|
||||
id='kt_login_password_reset_form'
|
||||
onSubmit={formik.handleSubmit}
|
||||
>
|
||||
{/* begin::Heading */}
|
||||
<div className='text-center mb-11'>
|
||||
{/* <h1 className='text-dark fw-bolder mb-3'>Sign In</h1> */}
|
||||
<img alt='Float Mobility' src={toAbsoluteUrl('/media/logos/logo.png')} className='h-35px' />
|
||||
</div>
|
||||
{/* begin::Heading */}
|
||||
<div className='text-center mb-10'>
|
||||
{/* begin::Link */}
|
||||
<div className='text-gray-500 fw-semibold fs-6'>
|
||||
|
||||
@@ -49,18 +49,20 @@ export function Login() {
|
||||
setStatus('The login details are incorrect')
|
||||
setSubmitting(false)
|
||||
setLoading(false)
|
||||
console.log(auth) //remove later
|
||||
return
|
||||
}
|
||||
saveAuth(auth)
|
||||
setCurrentUser(auth.profile)
|
||||
console.log(auth) //remove later
|
||||
} catch (error) {
|
||||
console.error(error)
|
||||
saveAuth(undefined)
|
||||
setStatus('The login details are incorrect')
|
||||
setSubmitting(false)
|
||||
setLoading(false)
|
||||
} finally {
|
||||
setTimeout(()=>{
|
||||
setStatus('')
|
||||
}, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT))
|
||||
}
|
||||
},
|
||||
})
|
||||
@@ -73,10 +75,10 @@ export function Login() {
|
||||
id='kt_login_signin_form'
|
||||
>
|
||||
{/* begin::Heading */}
|
||||
<div className='text-center mb-11'>
|
||||
{/* <h1 className='text-dark fw-bolder mb-3'>Sign In</h1> */}
|
||||
{/* <div className='text-center mb-11'>
|
||||
<h1 className='text-dark fw-bolder mb-3'>Sign In</h1>
|
||||
<img alt='Float Mobility' src={toAbsoluteUrl('/media/logos/logo.png')} className='h-35px' />
|
||||
</div>
|
||||
</div> */}
|
||||
{/* begin::Heading */}
|
||||
|
||||
{/* begin::Login options */}
|
||||
@@ -130,14 +132,6 @@ export function Login() {
|
||||
</div>
|
||||
{/* end::Separator */}
|
||||
|
||||
{formik.status ? (
|
||||
<div className='mb-lg-15 alert alert-danger'>
|
||||
<div className='alert-text font-weight-bold'>{formik.status}</div>
|
||||
</div>
|
||||
) : (
|
||||
null
|
||||
)}
|
||||
|
||||
{/* begin::Form group */}
|
||||
<div className='fv-row mb-8'>
|
||||
<label className='form-label fs-6 fw-bolder text-dark'>Email</label>
|
||||
@@ -221,6 +215,16 @@ export function Login() {
|
||||
</div>
|
||||
{/* end::Action */}
|
||||
|
||||
{/* error message */}
|
||||
{formik.status ? (
|
||||
<div className='mb-lg-15 alert alert-danger'>
|
||||
<div className='alert-text font-weight-bold'>{formik.status}</div>
|
||||
</div>
|
||||
) : (
|
||||
null
|
||||
)}
|
||||
{/* end of error message */}
|
||||
|
||||
<div className='text-gray-500 text-center fw-semibold fs-6'>
|
||||
Not a Member yet?{' '}
|
||||
<Link to='/auth/registration' className='link-primary'>
|
||||
|
||||
@@ -86,12 +86,6 @@ export function Registration() {
|
||||
id='kt_login_signup_form'
|
||||
onSubmit={formik.handleSubmit}
|
||||
>
|
||||
{/* begin::Heading */}
|
||||
<div className='text-center mb-11'>
|
||||
{/* <h1 className='text-dark fw-bolder mb-3'>Sign In</h1> */}
|
||||
<img alt='Float Mobility' src={toAbsoluteUrl('/media/logos/logo.png')} className='h-35px' />
|
||||
</div>
|
||||
{/* begin::Heading */}
|
||||
{/* begin::Login options */}
|
||||
<div className='row g-3 mb-9'>
|
||||
{/* begin::Col */}
|
||||
|
||||
@@ -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}</>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user