Skip to content
Snippets Groups Projects
User.js 3.07 KiB
Newer Older
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.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
  jwt: (state) => state.jwt,
  userData: (state) => state.userData,
  userRole: (state) => state.userRole,
  didAutoLogout: (state) => state.didAutoLogout,
  getLastPath : (state) => state.lastPath
    localStorage.setItem('jwt', jwt);
moon's avatar
moon committed
    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
    let expiresIn = 20000
    if ( process.env.VUE_APP_USER_EXPIRE_SEC ) {
      expiresIn = parseInt( process.env.VUE_APP_USER_EXPIRE_SEC )
    } else {
      console.error( 'Please setup VUE_APP_USER_EXPIRE_SEC environment variable. Default expiration time is 20 seconds')
    }

    const expirationDate = new Date().getTime() + expiresIn
    localStorage.setItem('tokenExpiration', expirationDate)
moon's avatar
moon committed
    commit('SET_USER_DATA', userData);

   timer= setTimeout(function(){
      dispatch('autoLogout')
    }, expiresIn )
    
  setUserRole({ commit }, userRole) {
    localStorage.setItem('roleName', userRole);
moon's avatar
moon committed
    commit('SET_USER_ROLE', userRole);
    localStorage.removeItem('jwt');
    localStorage.removeItem('userData');
    localStorage.removeItem('roleName');
    
    localStorage.removeItem('tokenExpiration')
    clearTimeout(timer)
moon's avatar
moon committed
    commit('LOG_OUT');
moon's avatar
moon committed
    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 )
moon's avatar
moon committed
    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')

export default {
  namespaced,
  state,
  mutations,
  getters,