| | |
| | | import {getCurInfo, getInfo, login, logout} from '@/api/user'; |
| | | import {changeSLoginInfo, getCurInfo, getInfo, login, logout} from '@/api/user'; |
| | | import { |
| | | getToken, |
| | | getUser, |
| | |
| | | import {encrypt} from '@/utils/jsencrypt' |
| | | |
| | | const state = { |
| | | info: getUser(), |
| | | userInfo:getUserDetail(),//用户详细信息 |
| | | token: getToken(), |
| | | userId:'', |
| | | name: '', |
| | | avatar: '', |
| | | introduction: '', |
| | | roles: [], |
| | | isLogin: Cookies.get('isLogin'), |
| | | permissions: [], |
| | | myButtonPermission:[], |
| | | captcha: { |
| | | captchaVerification: '', |
| | | secretKey: '', |
| | | token: '', |
| | | }, //滑块验证token |
| | | info: getUser(), |
| | | userInfo: getUserDetail(),//用户详细信息 |
| | | token: getToken(), |
| | | userId: '', |
| | | name: '', |
| | | avatar: '', |
| | | introduction: '', |
| | | roles: [], |
| | | isLogin: Cookies.get('isLogin'), |
| | | permissions: [], |
| | | myButtonPermission: [], |
| | | captcha: { |
| | | captchaVerification: '', |
| | | secretKey: '', |
| | | token: '', |
| | | }, //滑块验证token |
| | | }; |
| | | |
| | | const mutations = { |
| | | SET_USER_INFO:(state, info)=>{ |
| | | // 设置详细信息 |
| | | state.userInfo = info |
| | | setUserDetail(info) |
| | | }, |
| | | SET_MYBUTTONPERMISSION: (state, myButtonPermission) => { |
| | | state.myButtonPermission = myButtonPermission |
| | | }, |
| | | SET_TOKEN: (state, token) => { |
| | | state.token = token; |
| | | setToken(token) |
| | | }, |
| | | SET_USERINFO: (state, user) =>{ |
| | | // 保存用户信息 |
| | | state.info = user |
| | | setUserInfo(user) |
| | | }, |
| | | SET_ISLOGIN: (state, isLogin) => { |
| | | state.isLogin = isLogin; |
| | | Cookies.set(isLogin); |
| | | }, |
| | | SET_INTRODUCTION: (state, introduction) => { |
| | | state.introduction = introduction; |
| | | }, |
| | | SET_USERID: (state, id) => { |
| | | state.userId = id; |
| | | }, |
| | | 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_CAPTCHA: (state, captcha) => { |
| | | state.captcha = captcha; |
| | | } |
| | | SET_USER_INFO: (state, info) => { |
| | | // 设置详细信息 |
| | | state.userInfo = info |
| | | setUserDetail(info) |
| | | }, |
| | | SET_MYBUTTONPERMISSION: (state, myButtonPermission) => { |
| | | state.myButtonPermission = myButtonPermission |
| | | }, |
| | | SET_TOKEN: (state, token) => { |
| | | state.token = token; |
| | | setToken(token) |
| | | }, |
| | | SET_USERINFO: (state, user) => { |
| | | // 保存用户信息 |
| | | state.info = user |
| | | setUserInfo(user) |
| | | }, |
| | | SET_ISLOGIN: (state, isLogin) => { |
| | | state.isLogin = isLogin; |
| | | Cookies.set(isLogin); |
| | | }, |
| | | SET_INTRODUCTION: (state, introduction) => { |
| | | state.introduction = introduction; |
| | | }, |
| | | SET_USERID: (state, id) => { |
| | | state.userId = id; |
| | | }, |
| | | 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_CAPTCHA: (state, captcha) => { |
| | | state.captcha = captcha; |
| | | } |
| | | }; |
| | | |
| | | const actions = { |
| | | // user login |
| | | login({ commit }, userInfo) { |
| | | // const { account, pwd, key, code, wxCode } = userInfo; |
| | | const username = userInfo.account.trim() |
| | | // const password = userInfo.password |
| | | const password = encrypt(userInfo.password) |
| | | const code = userInfo.code |
| | | const uuid = userInfo.uuid |
| | | const loginType = userInfo.loginType |
| | | const verifyType = userInfo.verifyType |
| | | Loading.service(); |
| | | return new Promise((resolve, reject) => { |
| | | // login(userInfo) |
| | | login(username, password, code, uuid, loginType, verifyType) |
| | | .then((data) => { |
| | | let loadingInstance = Loading.service(); |
| | | loadingInstance.close(); |
| | | commit('SET_TOKEN', data.token); |
| | | commit('SET_USERINFO', data.userInfo); |
| | | getCurInfo().then(res=>{ |
| | | commit('SET_USER_INFO',res) |
| | | }) |
| | | resolve(); |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | // user login |
| | | login({commit}, userInfo) { |
| | | // const { account, pwd, key, code, wxCode } = userInfo; |
| | | const username = userInfo.account.trim() |
| | | // const password = userInfo.password |
| | | const password = encrypt(userInfo.password) |
| | | const code = userInfo.code |
| | | const uuid = userInfo.uuid |
| | | const loginType = userInfo.loginType |
| | | const verifyType = userInfo.verifyType |
| | | Loading.service(); |
| | | return new Promise((resolve, reject) => { |
| | | // login(userInfo) |
| | | login(username, password, code, uuid, loginType, verifyType) |
| | | .then((data) => { |
| | | let loadingInstance = Loading.service(); |
| | | loadingInstance.close(); |
| | | commit('SET_TOKEN', data.token); |
| | | commit('SET_USERINFO', data.userInfo); |
| | | getCurInfo().then(res => { |
| | | commit('SET_USER_INFO', res) |
| | | resolve(); |
| | | |
| | | changeSLoginInfo().then(res => { |
| | | commit('SET_USER_INFO', res) |
| | | resolve(); |
| | | }).catch((error) => { |
| | | reject(error); |
| | | }) |
| | | |
| | | |
| | | }).catch((error) => { |
| | | reject(error); |
| | | }) |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | // 短信是否登录 |
| | | isLogin({ commit }, userInfo) { |
| | | return new Promise((resolve, reject) => { |
| | | isLoginApi() |
| | | .then(async (res) => { |
| | | commit('SET_ISLOGIN', res.isLogin); |
| | | resolve(res); |
| | | }) |
| | | .catch((res) => { |
| | | commit('SET_ISLOGIN', false); |
| | | reject(res); |
| | | // 短信是否登录 |
| | | isLogin({commit}, userInfo) { |
| | | return new Promise((resolve, reject) => { |
| | | isLoginApi() |
| | | .then(async (res) => { |
| | | commit('SET_ISLOGIN', res.isLogin); |
| | | resolve(res); |
| | | }) |
| | | .catch((res) => { |
| | | commit('SET_ISLOGIN', false); |
| | | reject(res); |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | // get user info |
| | | getInfo({ commit, state }) { |
| | | return new Promise((resolve, reject) => { |
| | | getInfo(state.token) |
| | | .then(data => { |
| | | if (!data) { |
| | | reject('Verification failed, please Login again.'); |
| | | } |
| | | let roles = data.roleIds; |
| | | if (!roles || roles.length <= 0) { |
| | | reject('getInfo: roles must be a non-null array!'); |
| | | } |
| | | // 获取并设置修改密码的状态 |
| | | setCPass(data.force_change_pass) |
| | | if( data.force_change_pass ){ |
| | | router.push({ path: '/resetPwd' }); |
| | | reject(data); |
| | | } |
| | | commit('SET_USERID', data.id); |
| | | commit('SET_ROLES', roles); |
| | | commit('SET_NAME', data.account); |
| | | commit('SET_AVATAR', 'http://kaifa.crmeb.net/system/images/admin_logo.png'); |
| | | commit('SET_INTRODUCTION', data.realName); |
| | | commit('SET_PERMISSIONS', data.permissions); //权限标识 |
| | | resolve(data); |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | // get user info |
| | | getInfo({commit, state}) { |
| | | return new Promise((resolve, reject) => { |
| | | getInfo(state.token) |
| | | .then(data => { |
| | | if (!data) { |
| | | reject('Verification failed, please Login again.'); |
| | | } |
| | | let roles = data.roleIds; |
| | | if (!roles || roles.length <= 0) { |
| | | reject('getInfo: roles must be a non-null array!'); |
| | | } |
| | | // 获取并设置修改密码的状态 |
| | | setCPass(data.force_change_pass) |
| | | if (data.force_change_pass) { |
| | | router.push({path: '/resetPwd'}); |
| | | reject(data); |
| | | } |
| | | commit('SET_USERID', data.id); |
| | | commit('SET_ROLES', roles); |
| | | commit('SET_NAME', data.account); |
| | | commit('SET_AVATAR', 'http://kaifa.crmeb.net/system/images/admin_logo.png'); |
| | | commit('SET_INTRODUCTION', data.realName); |
| | | commit('SET_PERMISSIONS', data.permissions); //权限标识 |
| | | resolve(data); |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | // user logout |
| | | logout({ commit, state, dispatch }) { |
| | | Loading.service(); |
| | | return new Promise((resolve, reject) => { |
| | | logout(state.token) |
| | | .then(() => { |
| | | let loadingInstance = Loading.service(); |
| | | loadingInstance.close(); |
| | | commit('SET_TOKEN', ''); |
| | | commit('SET_ROLES', []); |
| | | commit('SET_PERMISSIONS', []); |
| | | commit('SET_CONNECTION_CLEAR', null) // 断开链接 |
| | | removeToken(); |
| | | resetRouter(); |
| | | // localStorage.clear(); |
| | | Cookies.remove('storeStaffList'); |
| | | Cookies.remove('JavaInfo'); |
| | | localStorage.clear('sidebarRouters'); |
| | | sessionStorage.removeItem('token'); |
| | | // reset visited views and cached views |
| | | // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485 |
| | | dispatch('tagsView/delAllViews', null, { root: true }); |
| | | // user logout |
| | | logout({commit, state, dispatch}) { |
| | | Loading.service(); |
| | | return new Promise((resolve, reject) => { |
| | | logout(state.token) |
| | | .then(() => { |
| | | let loadingInstance = Loading.service(); |
| | | loadingInstance.close(); |
| | | commit('SET_TOKEN', ''); |
| | | commit('SET_ROLES', []); |
| | | commit('SET_PERMISSIONS', []); |
| | | commit('SET_CONNECTION_CLEAR', null) // 断开链接 |
| | | removeToken(); |
| | | resetRouter(); |
| | | // localStorage.clear(); |
| | | Cookies.remove('storeStaffList'); |
| | | Cookies.remove('JavaInfo'); |
| | | localStorage.clear('sidebarRouters'); |
| | | sessionStorage.removeItem('token'); |
| | | // reset visited views and cached views |
| | | // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485 |
| | | dispatch('tagsView/delAllViews', null, {root: true}); |
| | | |
| | | resolve(); |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | resolve(); |
| | | }) |
| | | .catch((error) => { |
| | | reject(error); |
| | | }); |
| | | }); |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | // remove token |
| | | resetToken({ commit }) { |
| | | return new Promise((resolve) => { |
| | | commit('SET_TOKEN', ''); |
| | | commit('SET_ROLES', []); |
| | | removeToken(); |
| | | resolve(); |
| | | }); |
| | | }, |
| | | // // 设置token |
| | | // setToken({ commit }, state) { |
| | | // return new Promise((resolve) => { |
| | | // commit('SET_TOKEN', state.token); |
| | | // // Cookies.set('JavaInfo', JSON.stringify(state)); |
| | | // setToken(data.token); |
| | | // resolve(); |
| | | // }); |
| | | // }, |
| | | // remove token |
| | | resetToken({commit}) { |
| | | return new Promise((resolve) => { |
| | | commit('SET_TOKEN', ''); |
| | | commit('SET_ROLES', []); |
| | | removeToken(); |
| | | resolve(); |
| | | }); |
| | | }, |
| | | // // 设置token |
| | | // setToken({ commit }, state) { |
| | | // return new Promise((resolve) => { |
| | | // commit('SET_TOKEN', state.token); |
| | | // // Cookies.set('JavaInfo', JSON.stringify(state)); |
| | | // setToken(data.token); |
| | | // resolve(); |
| | | // }); |
| | | // }, |
| | | |
| | | // dynamically modify permissions |
| | | changeRoles({ commit, dispatch }, role) { |
| | | return new Promise(async (resolve) => { |
| | | // const token = role + '-token'; |
| | | // |
| | | // commit('SET_TOKEN', token); |
| | | // // setToken(token); |
| | | // |
| | | const { roles } = await dispatch('getInfo'); |
| | | // resetRouter(); |
| | | // generate accessible routes map based on roles |
| | | const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true }); |
| | | // dynamically add accessible routes |
| | | router.addRoutes(accessRoutes); |
| | | // dynamically modify permissions |
| | | changeRoles({commit, dispatch}, role) { |
| | | return new Promise(async (resolve) => { |
| | | // const token = role + '-token'; |
| | | // |
| | | // commit('SET_TOKEN', token); |
| | | // // setToken(token); |
| | | // |
| | | const {roles} = await dispatch('getInfo'); |
| | | // resetRouter(); |
| | | // generate accessible routes map based on roles |
| | | const accessRoutes = await dispatch('permission/generateRoutes', roles, {root: true}); |
| | | // dynamically add accessible routes |
| | | router.addRoutes(accessRoutes); |
| | | |
| | | // reset visited views and cached views |
| | | dispatch('tagsView/delAllViews', null, { root: true }); |
| | | // reset visited views and cached views |
| | | dispatch('tagsView/delAllViews', null, {root: true}); |
| | | |
| | | resolve(); |
| | | }); |
| | | }, |
| | | resolve(); |
| | | }); |
| | | }, |
| | | }; |
| | | |
| | | export default { |
| | | namespaced: true, |
| | | state, |
| | | mutations, |
| | | actions, |
| | | namespaced: true, |
| | | state, |
| | | mutations, |
| | | actions, |
| | | }; |