Skip to content

Instantly share code, notes, and snippets.

@dberry37388
Created February 7, 2019 00:27
Show Gist options
  • Save dberry37388/792b26d3be72f6b7fc9c05665420bd2d to your computer and use it in GitHub Desktop.
Save dberry37388/792b26d3be72f6b7fc9c05665420bd2d to your computer and use it in GitHub Desktop.
Sample auth.js Vuex store.
import authApi from '@/api/auth';
import Cookies from 'js-cookie';
import Errors from '@/modules/error';
export default {
namespaced: true,
state: {
errors: new Errors(),
status: '',
access_token: Cookies.get('access_token') || '',
user: {},
},
getters: {
check: state => !!state.access_token,
errors: state => state.errors,
status: state => state.status,
access_token: state => state.access_token,
user: state => state.user,
},
actions: {
clearErrors: ({ commit }) => {
commit('clearErrors');
},
login: ({ commit, dispatch }, payload) => {
return new Promise((resolve, reject) => {
commit('request');
authApi
.login(payload)
.then(response => {
console.log(response);
let access_token = response.data.access_token;
let user = response.data.user;
Cookies.set('access_token', access_token, {
expires: 365,
secure: true,
domain: window.location.hostname,
sameSite: 'Strict',
});
commit('success', {
access_token: access_token,
user: user,
});
resolve(response.data);
})
.catch(error => {
console.log(error);
commit('error', error);
Cookies.remove('access_token');
reject(error);
});
});
},
logout: ({ commit }) => {
commit('request');
return new Promise((resolve, reject) => {
authApi
.logout()
.then(response => {
Cookies.remove('access_token', {
expires: 365,
secure: true,
domain: window.location.hostname,
sameSite: 'Strict',
});
commit('logout');
resolve(response);
})
.catch(error => {
reject(error);
});
});
},
forgotPassword: ({ commit, dispatch }, payload) => {
commit('request');
return new Promise((resolve, reject) => {
authApi
.forgotPassword(payload)
.then(response => {
commit('setStatus', 'reset email sent');
resolve(response);
})
.catch(error => {
commit('error', error);
reject(error);
});
});
},
resetPassword: ({ commit, dispatch }, payload) => {
commit('request');
return new Promise((resolve, reject) => {
authApi
.resetPassword(payload)
.then(response => {
commit('setStatus', 'password reset');
resolve(response);
})
.catch(error => {
commit('error', error);
reject(error);
});
});
},
},
mutations: {
request: state => {
state.status = 'loading';
},
success(state, data) {
state.access_token = data.access_token;
state.errors.clear();
state.status = 'success';
state.user = data.user;
},
setStatus(state, status) {
state.status = status;
},
error: (state, error) => {
let errors = error.response.data.errors ? error.response.data.errors : {};
state.status = 'error';
state.errors.record(errors);
},
logout: state => {
state.access_token = '';
state.errors = new Errors();
state.status = '';
state.user = {};
},
clearErrors() {
state.errors.clear();
},
},
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment