fastbee/yack-web/src/store/modules/user.js

116 lines
4.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { login, logout, getInfo } from '@/api/login';
import { getToken, setToken, removeToken, setUserId, removeUserId } from '@/utils/auth';
import { resolveResourceUrl } from '@/utils/resource-url';
const user = {
state: {
token: getToken(),
name: '',
avatar: '',
roles: [],
permissions: [],
dept: null,
},
mutations: {
SET_TOKEN: (state, token) => {
state.token = token;
},
SET_NAME: (state, name) => {
state.name = name;
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar;
},
SET_ROLES: (state, roles) => {
state.roles = roles;
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions;
},
SET_MQTT: (state, mqtt) => {
state.mqtt = mqtt;
},
SET_DEPT: (state, dept) => {
state.dept = dept;
},
},
actions: {
// 登录
Login({ commit }, userInfo) {
const username = userInfo.username.trim();
const password = userInfo.password;
const code = userInfo.code;
const uuid = userInfo.uuid;
const sourceType = 1;
return new Promise((resolve, reject) => {
login(username, password, code, uuid, sourceType)
.then((res) => {
setToken(res.token);
commit('SET_TOKEN', res.token);
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 获取用户信息
GetInfo({ commit, state }) {
return new Promise((resolve, reject) => {
getInfo()
.then((res) => {
const user = res.user;
// 头像为空时回落到默认图;对象存储地址为绝对URL直接使用,历史本地路径才补后端前缀
const avatar = user.avatar === '' || user.avatar == null
? require('@/assets/images/profile.jpg')
: resolveResourceUrl(user.avatar, process.env.VUE_APP_BASE_API);
if (res.roles && res.roles.length > 0) {
// 验证返回的roles是否是一个非空数组
commit('SET_ROLES', res.roles);
commit('SET_PERMISSIONS', res.permissions);
} else {
commit('SET_ROLES', ['ROLE_DEFAULT']);
}
commit('SET_NAME', user.userName);
commit('SET_AVATAR', avatar);
commit('SET_MQTT', res.mqtt);
commit('SET_DEPT', user.dept);
setUserId(user.userId);
resolve(res);
})
.catch((error) => {
reject(error);
});
});
},
// 退出系统
LogOut({ commit, state }) {
return new Promise((resolve, reject) => {
logout(state.token)
.then(() => {
commit('SET_TOKEN', '');
commit('SET_ROLES', []);
commit('SET_PERMISSIONS', []);
commit('SET_DEPT', null);
removeToken();
removeUserId();
resolve();
})
.catch((error) => {
reject(error);
});
});
},
// 前端 登出
FedLogOut({ commit }) {
return new Promise((resolve) => {
commit('SET_TOKEN', '');
removeToken();
resolve();
});
},
},
};
export default user;