You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.4 KiB

import md5 from 'js-md5';
import {getStore, removeStore, setStore} from '@/util/store'
import {removeTokenCookies, removeUserCookies, setTokenCookies, setUserCookies} from '@/util/auth'
import {cancelToken, generateSalt, generateToken} from '@/api/user'
const user = {
state: {
user: getStore({name: 'user'}) || [],
token: getStore({name: 'token'}) || '',
},
actions: {
GenerateSalt(_, name) {
return new Promise((resolve, reject) => {
generateSalt(name).then(res => {
resolve(res.data);
}).catch(error => {
reject(error);
})
})
},
GenerateToken({commit}, form) {
let user = {
name: form.user.name,
password: md5(md5(form.user.password) + form.salt)
};
return new Promise((resolve, reject) => {
generateToken(user).then(res => {
const data = res.data;
commit('SET_USER', user.name);
commit('SET_TOKEN', data);
resolve();
}).catch(error => {
reject(error);
});
})
},
ClearToken({commit}, name) {
return new Promise((resolve, reject) => {
cancelToken(name).then((res) => {
commit('REMOVE_TOKEN');
commit('REMOVE_USER');
resolve(res);
}).catch(error => {
reject(error);
});
})
}
},
mutations: {
SET_USER: (state, user) => {
setUserCookies(user);
state.user = user;
setStore({name: 'user', content: state.user, type: 'session'})
},
REMOVE_USER: (state) => {
removeUserCookies();
state.user = '';
removeStore({name: 'user', type: 'session'});
},
SET_TOKEN: (state, token) => {
setTokenCookies(token);
state.token = token;
setStore({name: 'token', content: state.token, type: 'session'})
},
REMOVE_TOKEN: (state) => {
removeTokenCookies();
state.token = '';
removeStore({name: 'token', type: 'session'});
}
}
};
export default user