Crunchy
2025-06-14 7e460156de73171f9660ce48f80703e79f8b478d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
import { login, logout, getInfo, tideLogin } from '@/api/user'
import { getToken, setToken, removeToken, getrefreshToken, setrefreshToken, removerefreshToken } from '@/utils/auth'
import { resetRouter } from '@/router'
var qs = require('qs')
 
const getDefaultState = () => {
  return {
    token: getToken(),
    refresh: getrefreshToken(),
    name: '',
    avatar: '',
    authority: ''
  }
}
 
const state = getDefaultState()
 
const mutations = {
  RESET_STATE: (state) => {
    Object.assign(state, getDefaultState())
  },
  SET_TOKEN: (state, token) => {
    state.token = token
  },
  SET_REFRESH: (state, refresh) => {
    state.refresh = refresh
  },
  SET_NAME: (state, name) => {
    state.name = name
  },
  SET_AVATAR: (state, avatar) => {
    state.avatar = avatar
  },
  SET_AUTHORITY: (state, authority) => {
    state.authority = authority
  }
}
 
const actions = {
  // user login
  login({ commit }, userInfo) {
    console.log(userInfo)
    const { username, password } = userInfo
    console.log(typeof username)
    return new Promise((resolve, reject) => {
      // login()
      login(qs.stringify({ username: typeof username === 'number' ? username.toString().trim() : username.trim(), password: password })).then(response => {
        const { data } = response
        console.log(data)
        commit('SET_TOKEN', data.token)
        commit('SET_REFRESH', data.refresh)
        setToken(data.token)
        setrefreshToken(data.refresh)
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  },
 
  // get user info
  getInfo({ commit, state }) {
    return new Promise((resolve, reject) => {
      getInfo(state.token).then(response => {
        const { data, message } = response
        console.log(response)
        if (response.code === 10010) {
          resolve(message)
        }
        if (!data) {
          return reject('Verification failed, please Login again.')
        }
 
        const { name, avatar, authority } = data
 
        commit('SET_NAME', name)
        commit('SET_AVATAR', avatar)
        commit('SET_AUTHORITY', authority)
        resolve(data)
      }).catch(error => {
        reject(error)
      })
    })
  },
 
  // user logout
  logout({ commit, state }) {
    console.log('退出登录')
    return new Promise((resolve, reject) => {
      for (const key in state) {
        state[key] = ''
      }
      removeToken() // must remove  token  first
      removerefreshToken()
      resetRouter()
      commit('RESET_STATE')
      resolve()
      // logout(state.token).then(() => {
      //   removeToken() // must remove  token  first
      //   removerefreshToken()
      //   resetRouter()
      //   commit('RESET_STATE')
      //   resolve()
      // }).catch(error => {
      //   reject(error)
      // })
    })
  },
 
  // remove token
  resetToken({ commit }) {
    return new Promise(resolve => {
      removeToken() // must remove  token  first
      commit('RESET_STATE')
      resolve()
    })
  },
 
  // flushed Token
  flushedToken({ commit }, newTokens) {
    console.log('刷新token')
    commit('SET_TOKEN', newTokens.token)
    commit('SET_REFRESH', newTokens.refresh)
  },
 
  tideLogin({ commit }, code) {
    return new Promise((resolve, reject) => {
      tideLogin(code).then(response => {
        const { data } = response
        console.log(data)
        commit('SET_TOKEN', data.token)
        commit('SET_REFRESH', data.refresh)
        setToken(data.token)
        setrefreshToken(data.refresh)
        resolve()
      }).catch(error => {
        reject(error)
      })
    })
  }
}
 
export default {
  namespaced: true,
  state,
  mutations,
  actions
}