Skip to content
Snippets Groups Projects
User.js 2.89 KiB
Newer Older
let timer

const state = {
  jwt: null,
  userData: null,
  userRole: null,
  expirationDate: null,
  didAutoLogout: false,
  isLoggedIn: false,
moon's avatar
moon committed
  lastPath: null,

const mutations = {
  SET_JWT(state, jwt) {
    state.jwt = jwt;
  SET_USER_DATA(state, userData) {
    state.userData = userData;
  SET_USER_ROLE(state, userRole) {
    state.userRole = userRole;
  LOG_OUT(state) {
    state.jwt = null;
    state.userData = null;
    state.userRole = null;
moon's avatar
moon committed
  SET_AUTO_LOGOUT(state){
    state.didAutoLogout = true
moon's avatar
moon committed
  SET_LAST_PATH(state, payload){
moon's avatar
moon committed
  },
  SET_EXPIRE_TIME(state, expireTime) {
    state.expireTime = expireTime
  jwt: (state) => state.jwt,
  userData: (state) => state.userData,
  userRole: (state) => state.userRole,
  didAutoLogout: (state) => state.didAutoLogout,
moon's avatar
moon committed
  getLastPath : (state) => state.lastPath,
  expireTime : (state) => state.expireTime
    localStorage.setItem('jwt', jwt);
moon's avatar
moon committed
    commit('SET_JWT', jwt);
moon's avatar
moon committed
  setUserData({ commit, dispatch, state }, userData) {
   
    localStorage.setItem('userData', userData)
   
    /*
    calulation of hours to millisec
    (hr*3600000)
    */
    // const expiresIn = 60 * 1000
    let expiresIn = state.expireTime
    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')
moon's avatar
moon committed
    context.commit('SET_AUTO_LOGOUT')
moon's avatar
moon committed
   context.commit('SET_LAST_PATH', path)
  },
  setExpireTime(context, expireTime) {
    context.commit('SET_EXPIRE_TIME', expireTime)

export default {
  namespaced,
  state,
  mutations,
  getters,