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.
yanzong_qianduan/store/modules/user.js

133 lines
3.5 KiB

5 months ago
import { ACCESS_TOKEN, USER_ID } from '@/store/mutation-types'
import storage from '@/utils/storage'
import * as LoginApi from '@/api/login'
// 登陆成功后执行
const loginSuccess = (commit, { token, userId }) => {
// 过期时间30天
const expiryTime = 30 * 86400
// 保存tokne和userId到缓存
storage.set(USER_ID, userId, expiryTime)
storage.set(ACCESS_TOKEN, token, expiryTime)
// 记录到store全局变量
commit('SET_TOKEN', token)
commit('SET_USER_ID', userId)
}
const user = {
state: {
// 用户认证token
token: '',
// 用户ID
userId: null
},
mutations: {
SET_TOKEN: (state, value) => {
state.token = value
},
SET_USER_ID: (state, value) => {
state.userId = value
}
},
actions: {
// 用户登录 (普通登录: 输入手机号和验证码)
Login({ commit }, data) {
return new Promise((resolve, reject) => {
LoginApi.login({ form: data })
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
// 微信小程序一键授权登录 (获取用户基本信息)
LoginMpWx({ commit }, data) {
return new Promise((resolve, reject) => {
LoginApi.loginMpWx({ form: data }, { isPrompt: false })
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
// 微信公众号一键授权登录 (获取用户基本信息)
LoginWxOfficial({ commit }, data) {
return new Promise((resolve, reject) => {
LoginApi.loginWxOfficial({ form: data }, { isPrompt: false })
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
// 微信小程序一键授权登录 (授权手机号)
LoginMpWxMobile({ commit }, data) {
return new Promise((resolve, reject) => {
LoginApi.loginMpWxMobile({ form: data }, { isPrompt: false })
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
LoginWxPhone({ commit }, data) {
return new Promise((resolve, reject) => {
LoginApi.auth({ form: data }, { isPrompt: false })
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
// 支付宝小程序一键授权登录 (获取用户基本信息)
LoginMpAlipay({ commit }, data) {
return new Promise((resolve, reject) => {
LoginApi.loginMpAlipay({ form: data }, { isPrompt: false })
.then(response => {
const result = response.data
loginSuccess(commit, result)
resolve(response)
})
.catch(reject)
})
},
// 退出登录
Logout({ commit }, data) {
const store = this
return new Promise((resolve, reject) => {
if (store.getters.userId > 0) {
// 删除缓存中的tokne和userId
storage.remove(USER_ID)
storage.remove(ACCESS_TOKEN)
// 记录到store全局变量
commit('SET_TOKEN', '')
commit('SET_USER_ID', null)
resolve()
}
})
}
}
}
export default user