Files
cssd-back/resources/js/vue/store/modules/auth/actions.js
T
2019-08-21 14:49:33 +04:30

83 lines
3.0 KiB
JavaScript
Vendored

import { UserService, AuthenticationError, ApiService, TokenService } from '@/services'
import router from '@/router'
import { urls } from '@/config/urls'
export default {
async login({ commit, dispatch }, {cell_number, password}) {
commit('loginRequest');
try {
const response = await UserService.login(cell_number, password);
commit('loginSuccess', response.data.access_token);
// Redirect the user to the page he first tried to visit or to the home view
router.push(router.history.current.query.redirect || '/');
dispatch('info', {}, {root : true});
return response;
} catch (e) {
if (e instanceof AuthenticationError) {
commit('loginError', {errorCode: e.errorCode, errorMessage: e.message})
}
return false
}
},
async forgotPassword({commit}, {form}) {
var result = await ApiService.post(urls.forgotPassword, form);
if(result && result.status == 200) {
commit('modal/changeCurrentModal', { modal: "modal-auth-verify-code" }, {root: true});
}
},
async verifyCodeSMS({commit, dispatch}, {form}) {
var response = await ApiService.post(urls.sendVerifyCode, form);
if(response && response.status == 200 && response.data.access_token) {
TokenService.saveToken(response.data.access_token);
TokenService.saveRefreshToken(response.data.refresh_token);
ApiService.setAuthHeader();
commit('loginSuccess', response.data.access_token);
commit('modal/changeCurrentModal', { modal: "modal-auth-change-password" }, {root: true});
dispatch('info', {}, {root : true});
}
},
async changePassword({commit}, {form}) {
var response = await ApiService.post(urls.changePassword, form);
if(response && response.status == 200 ) {
commit('modal/closeModal', {}, {root: true});
router.push({ name: `Dashboard` });
}
},
async logout({ commit }) {
await UserService.logout();
commit('logoutSuccess')
router.push('/login')
},
refreshToken({ commit, state }) {
// If this is the first time the refreshToken has been called, make a request
// otherwise return the same promise to the caller
if(!state.refreshTokenPromise) {
const p = UserService.refreshToken()
commit('refreshTokenPromise', p)
// Wait for the UserService.refreshToken() to resolve. On success set the token and clear promise
// Clear the promise on error as well.
p.then(
response => {
commit('refreshTokenPromise', null)
commit('loginSuccess', response)
},
error => {
commit('refreshTokenPromise', null)
}
)
}
return state.refreshTokenPromise
}
}