ktianc ff56a184ca 版本升级:
1. 修复(kinit-admin):页面缓存问题修复
2. 更新(kinit-api,kinit-admin):菜单管理新增是否缓存字段
3. 更新(kinit-admin):将缓存默认存储在localStorage中
4. 更新(kinit-api):将python-jose库更换为pyjwt库
5. 优化(kinit-admin,kinit-uni):退出登录方法优化
6. 优化(kinit-admin,kinit-uni):response拦截优化
7. 新增(kinit-api,kinit-admin,kinit-uni):jwt到期时间缩短,加入刷新token功能
8. (kinit-uni)切换到 vscode 开发 uniapp 项目
2023-03-13 14:34:26 +08:00

194 lines
5.9 KiB
Python
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 storage from '@/common/utils/storage'
import { auth } from '@/common/utils/constant'
import { getInfo, wxCodeLogin, login } from '@/common/request/api/login'
import {
getToken,
setToken,
removeToken,
getRefreshToken,
setRefreshToken,
removeRefreshToken
} from '@/common/utils/auth'
const state = {
token: getToken(),
refreshToken: getRefreshToken(),
isUser: storage.get(auth.isUser) || false,
isUserOpenid: storage.get(auth.isUserOpenid) || false,
isResetPassword: storage.get(auth.isResetPassword) || false,
name: storage.get(auth.name),
nickname: storage.get(auth.nickname),
gender: storage.get(auth.gender),
telephone: storage.get(auth.telephone),
avatar: storage.get(auth.avatar),
createDatetime: storage.get(auth.createDatetime),
roles: storage.get(auth.roles),
permissions: storage.get(auth.permissions)
}
const mutations = {
SET_TOKEN: (state, token) => {
state.token = token
},
SET_REFRESH_TOKEN: (state, refreshToken) => {
state.refreshToken = refreshToken
setRefreshToken(refreshToken)
},
SET_IS_USER_OPENID: (state, isUserOpenid) => {
state.isUserOpenid = isUserOpenid
storage.set(auth.isUserOpenid, isUserOpenid)
},
SET_IS_RESET_PASSWORD: (state, isResetPassword) => {
state.isResetPassword = isResetPassword
storage.set(auth.isResetPassword, isResetPassword)
},
SET_NAME: (state, name) => {
state.name = name
storage.set(auth.name, name)
},
SET_GENDER: (state, gender) => {
state.gender = gender
storage.set(auth.gender, gender)
},
SET_NICKNAME: (state, nickname) => {
state.nickname = nickname
storage.set(auth.nickname, nickname)
},
SET_CREATE_DATETIME: (state, createDatetime) => {
state.createDatetime = createDatetime
storage.set(auth.createDatetime, createDatetime)
},
SET_AVATAR: (state, avatar) => {
state.avatar = avatar
storage.set(auth.avatar, avatar)
},
SET_ROLES: (state, roles) => {
state.roles = roles
storage.set(auth.roles, roles)
},
SET_PERMISSIONS: (state, permissions) => {
state.permissions = permissions
storage.set(auth.permissions, permissions)
},
SET_TELEPHONE: (state, telephone) => {
state.telephone = telephone
storage.set(auth.telephone, telephone)
},
SET_ISUSER: (state, isUser) => {
state.isUser = isUser
storage.set(auth.isUser, isUser)
}
}
const actions = {
// 手机号密码登录
Login({ commit }, userInfo) {
const telephone = userInfo.telephone.trim()
const password = userInfo.password
return new Promise((resolve, reject) => {
login(telephone, password)
.then((res) => {
setToken(`${res.data.token_type} ${res.data.access_token}`)
commit('SET_TOKEN', `${res.data.token_type} ${res.data.access_token}`)
commit('SET_REFRESH_TOKEN', res.data.refresh_token)
commit('SET_IS_USER_OPENID', res.data.is_wx_server_openid)
commit('SET_IS_RESET_PASSWORD', res.data.is_reset_password)
resolve(res)
})
.catch((error) => {
reject(error)
})
})
},
// 微信一键登录
// 微信文档https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html
wxLogin({ commit }, code) {
return new Promise((resolve, reject) => {
wxCodeLogin(code)
.then((res) => {
setToken(`${res.data.token_type} ${res.data.access_token}`)
commit('SET_TOKEN', `${res.data.token_type} ${res.data.access_token}`)
commit('SET_REFRESH_TOKEN', res.data.refresh_token)
commit('SET_IS_USER_OPENID', res.data.is_wx_server_openid)
commit('SET_IS_RESET_PASSWORD', res.data.is_reset_password)
resolve(res)
})
.catch((error) => {
reject(error)
})
})
},
// 获取用户信息
GetInfo({ commit }) {
return new Promise((resolve, reject) => {
getInfo()
.then((res) => {
const user = res.data
const avatar =
user == null || user.avatar == '' || user.avatar == null
? 'https://vv-reserve.oss-cn-hangzhou.aliyuncs.com/avatar/2023-01-27/1674820804e81e7631.png'
: user.avatar
const name = user == null || user.name == '' || user.name == null ? '' : user.name
commit('SET_ROLES', user.roles.map((item) => item.name) || ['ROLE_DEFAULT'])
commit('SET_PERMISSIONS', user.permissions)
commit('SET_NAME', name)
commit('SET_NICKNAME', user.nickname)
commit('SET_GENDER', user.gender)
commit('SET_TELEPHONE', user.telephone)
commit('SET_AVATAR', avatar)
commit('SET_CREATE_DATETIME', user.create_datetime)
commit('SET_ISUSER', true)
resolve(res)
})
.catch((error) => {
reject(error)
})
})
},
// 更新用户基本信息
UpdateInfo({ commit }, user) {
commit('SET_NAME', user.name)
commit('SET_NICKNAME', user.nickname)
commit('SET_GENDER', user.gender)
commit('SET_TELEPHONE', user.telephone)
},
// 退出系统
LogOut({ commit }) {
return new Promise((resolve, reject) => {
commit('SET_TOKEN', '')
commit('SET_REFRESH_TOKEN', '')
commit('SET_ROLES', [])
commit('SET_PERMISSIONS', [])
commit('SET_NAME', '')
commit('SET_NICKNAME', '')
commit('SET_GENDER', '')
commit('SET_TELEPHONE', '')
commit('SET_AVATAR', '')
commit('SET_CREATE_DATETIME', '')
commit('SET_IS_USER_OPENID', false)
commit('SET_IS_RESET_PASSWORD', false)
commit('SET_ISUSER', false)
removeToken()
removeRefreshToken()
storage.clean()
uni.reLaunch({
url: '/pages/login/login',
complete: () => {
resolve()
}
})
})
}
}
export default {
namespaced: true, // 使用命名空间去访问模块中属性user/login
state,
mutations,
actions
}