const namespaced = true; let timer const state = { jwt: null, userData: null, userRole: null, expirationDate: null, didAutoLogout: false, isLoggedIn: false, lastPath: null }; const mutations = { SET_JWT(state, jwt) { state.jwt = jwt; }, SET_USER_DATA(state, userData) { state.userData = userData; // state.tokenExpiration }, SET_USER_ROLE(state, userRole) { state.userRole = userRole; }, // SET_TOKEN_EXPIRATION(state, tokenExpiration){ // console.log("in action epiration data is", tokenExpiration); // state.expirationDate = tokenExpiration // }, LOG_OUT(state) { state.jwt = null; state.userData = null; state.userRole = null; }, setAutoLogout(state){ state.didAutoLogout = true }, setLastPath(state, payload){ state.lastPath = payload } }; const getters = { jwt: (state) => state.jwt, userData: (state) => state.userData, userRole: (state) => state.userRole, didAutoLogout: (state) => state.didAutoLogout, getLastPath : (state) => state.lastPath }; const actions = { setJwt({ commit }, jwt) { localStorage.setItem('jwt', jwt); commit('SET_JWT', jwt); }, setUserData({ commit, dispatch }, userData) { localStorage.setItem('userData', userData); /* calulation of hours to millisec (hr*3600000) */ // const expiresIn = 60 * 1000 const expiresIn = 20000 const expirationDate = new Date().getTime() + expiresIn localStorage.setItem('tokenExpiration', expirationDate) commit('SET_USER_DATA', userData); timer= setTimeout(function(){ dispatch('autoLogout') }, expiresIn ) }, setUserRole({ commit }, userRole) { localStorage.setItem('roleName', userRole); commit('SET_USER_ROLE', userRole); }, logOut({ commit }) { localStorage.removeItem('jwt'); localStorage.removeItem('userData'); localStorage.removeItem('roleName'); localStorage.removeItem('tokenExpiration') clearTimeout(timer) commit('LOG_OUT'); }, tryLogin(context) { const jwtToken = localStorage.getItem('jwt'); const userData = localStorage.getItem('userData'); const role = localStorage.getItem('roleName'); const tokenExpiration = localStorage.getItem('tokenExpiration') const expiresIn= tokenExpiration - new Date().getTime() if(expiresIn<0){ return } timer = setTimeout(function(){ context.dispatch('autoLogout') }, expiresIn ) context.commit('SET_JWT', jwtToken); context.commit('SET_USER_DATA', userData); context.commit('SET_USER_ROLE', role); }, autoLogout(context){ context.dispatch('logOut') context.commit('setAutoLogout') }, setLastPath(context, path){ console.log("last path stored", path); context.commit('setLastPath', path) } }; export default { namespaced, state, mutations, getters, actions, };