vuex里面的登录方法

import { login, logout, getPhoneValidate, forgetPass, register } from '@/api/user'
import { resetRouter } from '@/router'

const state = {
  name: '',
  userInfo: (sessionStorage.getItem(`userInfo`) && JSON.parse(sessionStorage.getItem(`userInfo`))) || {},
  phoneValidate: ''
}
const mutations = {
  SET_NAME: (state, name) => {
    state.name = name
  },
  SET_USERINFO: (state, userInfo) => {
    state.userInfo = userInfo
  },
  SET_PHONE: (state, phoneValidate) => {
    state.phoneValidate = phoneValidate
  }
}
const actions = {
  // 登录
  login({ commit }, userInfo) {
    const { username, password, rememberMe, teamId } = userInfo
    return new Promise((resolve, reject) => {
      // 登录以form-data形式传参
      const formData = new FormData()
      formData.set('account', username)
      formData.set('password', password)
      teamId && formData.set('teamId', teamId)
      login(formData).then(response => {
        const { user } = response
        // 记住用户信息 - 记住—》存localStorage中,不记住则下次打开就消失(sessionStorage中存储)
        if (rememberMe === true) {
          localStorage.setItem('token', user.jwtToken)
        } else {
          sessionStorage.setItem('token', user.jwtToken)
        }
        commit('SET_NAME', user.realName)
        sessionStorage.setItem('userInfo', JSON.stringify(user))
        localStorage.setItem('userInfo', JSON.stringify(user))
        state.userInfo = user
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // 注册
  register({ commit }, params) {
    return new Promise((resolve, reject) => {
      register({ ...params }).then(response => {
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // 获取验证码
  getPhoneValidate({ commit }, params) {
    return new Promise((resolve, reject) => {
      getPhoneValidate({ ...params }).then(response => {
        commit('SET_PHONE', response.message)
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // 忘记密码
  forgetPass({ commit }, params) {
    return new Promise((resolve, reject) => {
      forgetPass({ ...params }).then(response => {
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },

  // 注销 - 登出
  logout({ commit, state, dispatch }) {
    return new Promise((resolve, reject) => {
      const token = localStorage.getItem('token') || sessionStorage.getItem('token')
      logout(token).then(() => {
        // 去掉token
        sessionStorage.setItem('token', '')
        localStorage.setItem('token', '')
        resetRouter()
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  }

}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值