cheetah-framework
Version:
Cheetah Framework JS used in all our applications
75 lines (64 loc) • 1.83 kB
JavaScript
/* global axios Echo echoActive */
import User from '@cheetah/models/User'
import { Router } from '@cheetah/utils/Router'
export default {
namespaced: true,
state: {
user: window.Cheetah.user ? new User(window.Cheetah.user) : null
},
getters: {
userId: state => {
return state.user?.id
}
},
actions: {
fetchUser ({ commit }) {
return User.check().then(response => {
commit('SET_USER', response.data.user)
axios.defaults.headers.common['X-CSRF-TOKEN'] = response.data.token
return response
}).catch(error => {
commit('SET_USER', null)
throw error
})
},
login ({ commit, state }, formData) {
return User.login(formData).then(({ data }) => {
commit('SET_USER', data.user)
axios.defaults.headers.common['X-CSRF-TOKEN'] = data.token
if (echoActive) {
Echo.connector.pusher.config.auth.headers['X-CSRF-TOKEN'] = data.token
}
Router.redirectAfterLogin()
}).catch(error => {
commit('SET_USER', null)
throw error
})
},
register ({ commit }, formData) {
return User.register(formData).then(({ data }) => {
commit('SET_USER', data.user)
}).catch(error => {
commit('SET_USER', null)
throw error
})
},
logout ({ commit }) {
return User.logout().then(({ data }) => {
commit('SET_USER', null)
axios.defaults.headers.common['X-CSRF-TOKEN'] = data.token
if (echoActive) {
Echo.connector.pusher.config.auth.headers['X-CSRF-TOKEN'] = data.token
}
Router.redirectAfterLogout()
}).catch(error => {
throw error
})
}
},
mutations: {
SET_USER (state, user) {
state.user = user ? new User(user) : null
}
}
}