Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const millisecondsPerSecond = 1000
const bestGuessOfRequestLatencyInMilliseconds = 120 * millisecondsPerSecond // take 2 minutes off of duration to account for latency
let now = new Date()
let cerberusAuthTokenExpiresDateInMilliseconds = (now.getTime() + ((leaseDurationInSeconds * millisecondsPerSecond) - bestGuessOfRequestLatencyInMilliseconds))
let tokenExpiresDate = new Date()
let token = response.data.data.client_token.client_token
tokenExpiresDate.setTime(cerberusAuthTokenExpiresDateInMilliseconds)
log.debug(`Setting session timeout to ${tokenExpiresDate}`)
let timeToExpireTokenInMillis = tokenExpiresDate.getTime() - now.getTime()
let sessionExpirationCheckIntervalInMillis = 2000
let sessionExpirationCheckIntervalId = workerTimers.setInterval(() => {
let currentTimeInMillis = new Date().getTime()
let sessionExpirationTimeInMillis = tokenExpiresDate.getTime()
if (currentTimeInMillis >= sessionExpirationTimeInMillis) {
dispatch(handleSessionExpiration())
}
}, sessionExpirationCheckIntervalInMillis)
let sessionWarningTimeoutId = workerTimers.setTimeout(() => {
dispatch(warnSessionExpiresSoon(token))
}, timeToExpireTokenInMillis - 120000) // warn two minutes before expiration
dispatch(setSessionWarningTimeoutId(sessionWarningTimeoutId))
sessionStorage.setItem('token', JSON.stringify(response.data))
sessionStorage.setItem('tokenExpiresDate', tokenExpiresDate)
sessionStorage.setItem('userRespondedToSessionWarning', false)