import { login, elogin, logout, getInfo, getOnline } from '@/api/user';
|
import { getToken, setToken, removeToken, setEToken, removeSsoToken } from '@/utils/auth';
|
import { resetRouter } from '@/router';
|
|
const state = {
|
token: getToken(),
|
name: '',
|
username: '',
|
permissionId: [],
|
avatar: '',
|
id: 0
|
};
|
|
const mutations = {
|
SET_TOKEN: (state, token) => {
|
state.token = token;
|
},
|
SET_NAME: (state, name) => {
|
state.name = name;
|
},
|
SET_USERNAME: (state, username) => {
|
state.username = username;
|
},
|
SET_PERMISSIONID: (state, permissionId) => {
|
state.permissionId = permissionId;
|
},
|
SET_AVATAR: (state, avatar) => {
|
state.avatar = avatar;
|
},
|
SET_ID: (state, id) => {
|
state.id = id;
|
}
|
};
|
|
const actions = {
|
// user login
|
login({ commit }, userInfo) {
|
const { username, password } = userInfo;
|
return new Promise((resolve, reject) => {
|
login({ username: username.trim(), password: password })
|
.then(response => {
|
commit('SET_TOKEN', response.token);
|
setToken(response.token);
|
resolve(response);
|
})
|
.catch(error => {
|
reject(error);
|
});
|
});
|
},
|
|
elogin({ commit }, userInfo) {
|
const { username, password } = userInfo;
|
return new Promise((resolve, reject) => {
|
elogin({ username: username.trim(), password: password, type: 1 })
|
.then(response => {
|
setEToken(response.token);
|
resolve(response);
|
})
|
.catch(error => {
|
reject(error);
|
});
|
});
|
},
|
|
// get user info
|
getInfo({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
getInfo(state.token)
|
.then(response => {
|
const { data } = response;
|
|
if (!data) {
|
reject('Verification failed, please Login again.');
|
}
|
|
const { name, avatar } = data;
|
|
commit('SET_NAME', name);
|
commit('SET_AVATAR', avatar);
|
resolve(data);
|
})
|
.catch(error => {
|
reject(error);
|
});
|
});
|
},
|
|
// get online user info
|
getOnlineInfo({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
getOnline()
|
.then(response => {
|
const { data } = response;
|
if (!data) {
|
reject('Verification failed, please Login again.');
|
}
|
|
const { name, username, permissionId, id } = data;
|
|
commit('SET_NAME', name);
|
commit('SET_USERNAME', username);
|
commit('SET_PERMISSIONID', permissionId);
|
commit('SET_ID', id);
|
resetRouter();
|
resolve(data);
|
})
|
.catch(error => {
|
reject(error);
|
});
|
});
|
},
|
|
// user logout
|
logout({ commit, state }) {
|
return new Promise((resolve, reject) => {
|
logout(state.token)
|
.then(() => {
|
commit('SET_TOKEN', '');
|
// commit('SET_ROUTES', '');
|
// commit('SET_USERNAME', '');
|
|
removeToken();
|
removeSsoToken();
|
resetRouter();
|
resolve();
|
})
|
.catch(error => {
|
reject(error);
|
});
|
});
|
},
|
|
// remove token
|
resetToken({ commit }) {
|
return new Promise(resolve => {
|
commit('SET_TOKEN', '');
|
removeToken();
|
resolve();
|
});
|
}
|
};
|
|
export default {
|
namespaced: true,
|
state,
|
mutations,
|
actions
|
};
|