From 8db9bbddb8722a3d48d3434120a5f85e0eda93a7 Mon Sep 17 00:00:00 2001 From: Hans-Peter Herzog Date: Wed, 21 Feb 2018 14:33:17 +0100 Subject: [PATCH] TT#32204 Session: Ignore logout timeout if session expiration is not set in jwt Change-Id: I13f0631fbba8721f863cd01c9a377ee5e2acf1bf --- src/store/user.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src/store/user.js b/src/store/user.js index ca075ecb..e3b527c0 100644 --- a/src/store/user.js +++ b/src/store/user.js @@ -82,13 +82,21 @@ export default { return state.userDataSucceeded; }, jwtTTL(state) { - var expirationBuffer = 0.05; - var jwtParts = state.jwt.split('\.'); - var jwtPayload = JSON.parse(atob(jwtParts[1])); - var timeDiff = Math.floor((Date.now() / 1000) - jwtPayload.exp); - var timeLeft = Math.abs(timeDiff); - var timeLeftBuffer = Math.round(timeLeft * expirationBuffer); - return timeLeft - timeLeftBuffer + let expirationBuffer = 0.05; + try { + let jwtParts = state.jwt.split('\.'); + let jwtPayload = JSON.parse(atob(jwtParts[1])); + if(_.isNumber(jwtPayload.exp)) { + let timeDiff = Math.floor((Date.now() / 1000) - jwtPayload.exp); + let timeLeft = Math.abs(timeDiff); + let timeLeftBuffer = Math.round(timeLeft * expirationBuffer); + return timeLeft - timeLeftBuffer; + } else { + return null; + } + } catch(err) { + return null; + } } }, mutations: { @@ -165,9 +173,11 @@ export default { subscriber: result.subscriber, capabilities: result.capabilities }); - setTimeout(()=>{ - context.dispatch('logout'); - }, context.getters.jwtTTL * 1000); + if(_.isNumber(context.getters.jwtTTL)) { + setTimeout(()=>{ + context.dispatch('logout'); + }, context.getters.jwtTTL * 1000); + } context.dispatch('call/initialize', null, { root: true }); }).catch((err)=>{ context.commit('userDataFailed', err.message);