user.js 3.23 KB
import {getInfo, login, logout} from '@/api/moudles/uc/user';
import {getToken, removeToken, setToken} from '@/utils/auth';

const state = {
    token: getToken(),
    id: '',
    name: '',
    code: '',
    avatar: '',
    introduction: ''
};

const mutations = {
    SET_TOKEN: (state, token) => {
        state.token = token;
    },
    SET_INTRODUCTION: (state, introduction) => {
        state.introduction = introduction;
    },
    SET_ID: (state, id) => {
        state.id = id;
    },
    SET_NAME: (state, name) => {
        state.name = name;
    },
    SET_CODE: (state, code) => {
        state.code = code;
    },
    SET_AVATAR: (state, avatar) => {
        state.avatar = avatar;
    },
    SET_MENUS: (state, menus) => {
        state.menus = menus;
    }
};

const actions = {
    setName({
                commit
            }, name) {
        return new Promise((resolve, reject) => {
            commit('SET_NAME', name);
            resolve();
        });
    },
    // user login
    login({
              commit
          }, userInfo) {
        return new Promise((resolve, reject) => {
            login(userInfo).then(response => {
                const {
                    data
                } = response;
                commit('SET_TOKEN', data);
                setToken(data);
                resolve();
            }).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('登录失败,请重新登录!');
                }

                const {
                    id,
                    name,
                    code,
                    faceUrl
                } = data;

                commit('SET_ID', id);
                commit('SET_NAME', name);
                commit('SET_CODE', code);
                commit('SET_AVATAR', faceUrl || require('@/assets/img/default/default_user.png'));
                // commit('SET_MEUNS', menus);
                resolve(data);
            }).catch(error => {
                reject(error);
            });
        });
    },

    // user logout
    logout({
               commit,
               state,
               dispatch
           }) {
        return new Promise((resolve, reject) => {
            logout(state.token).then(() => {
                commit('SET_TOKEN', '');
                dispatch('permission/setPermissions', [], {root: true});
                removeToken();
                resolve();
            }).catch(error => {
                reject(error);
            });
        });
    },

    // remove token
    resetToken({
                   commit,
                   state,
                   dispatch
               }) {
        return new Promise(resolve => {
            commit('SET_TOKEN', '');
            dispatch('permission/setPermissions', [], {root: true});
            removeToken();
            resolve();
        });
    }
};

export default {
    namespaced: true,
    state,
    mutations,
    actions
};