feat:迁移vue-element-admin登录页面
This commit is contained in:
@@ -1,32 +1,42 @@
|
||||
import {Module} from "vuex";
|
||||
import {UserState, RootStateTypes} from "@store/interface";
|
||||
import {Local} from "@utils/storage";
|
||||
import {login} from "@api/login"
|
||||
import {rejects} from "assert";
|
||||
import {getUserInfo, login,logout} from "@api/login"
|
||||
|
||||
|
||||
const getDefaultState = () => {
|
||||
return {
|
||||
token: Local.get('token'),
|
||||
nickname: '',
|
||||
avatar: '',
|
||||
roles: [],
|
||||
perms: []
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const userModule: Module<UserState, RootStateTypes> = {
|
||||
namespaced: true,
|
||||
state: {
|
||||
token: Local.get('token') || '',
|
||||
name: '',
|
||||
nickname: '',
|
||||
avatar: '',
|
||||
introduction: '',
|
||||
roles: [],
|
||||
perms: []
|
||||
},
|
||||
mutations: {
|
||||
RESET_STATE: (state) => {
|
||||
Object.assign(state, getDefaultState())
|
||||
},
|
||||
SET_TOKEN(state: UserState, token: string) {
|
||||
state.token = token
|
||||
},
|
||||
SET_NAME(state: UserState, name: string) {
|
||||
state.name = name
|
||||
SET_NICKNAME(state: UserState, nickname: string) {
|
||||
state.nickname = nickname
|
||||
},
|
||||
SET_AVATAR(state: UserState, avatar: string) {
|
||||
state.avatar = avatar
|
||||
},
|
||||
SET_INTRODUCTION(state: UserState, introduction: string) {
|
||||
state.introduction = introduction
|
||||
},
|
||||
SET_ROLES(state: UserState, roles: string[]) {
|
||||
state.roles = roles
|
||||
},
|
||||
@@ -35,21 +45,77 @@ const userModule: Module<UserState, RootStateTypes> = {
|
||||
}
|
||||
},
|
||||
actions: {
|
||||
// 登录
|
||||
login({commit}, userInfo: { username: string, password: string }) {
|
||||
const {username, password} = userInfo
|
||||
/**
|
||||
* 用户登录请求
|
||||
* @param userInfo 登录用户信息
|
||||
* username: 用户名
|
||||
* password: 密码
|
||||
* code: 验证码
|
||||
* uuid: 匹配正确验证码的 key
|
||||
*/
|
||||
login({commit}, userInfo: { username: string, password: string, code: string, uuid: string }) {
|
||||
const {username, password, code, uuid} = userInfo
|
||||
return new Promise((resolve, reject) => {
|
||||
login({ username: username.trim(), password: password }).then(response => {
|
||||
login(
|
||||
{
|
||||
username: username.trim(),
|
||||
password: password,
|
||||
grant_type: 'captcha',
|
||||
code: code,
|
||||
uuid: uuid
|
||||
}
|
||||
).then(response => {
|
||||
const {access_token, token_type} = response.data
|
||||
const accessToken = token_type + " " + access_token
|
||||
Local.set("token",accessToken)
|
||||
commit('SET_TOKEN',accessToken)
|
||||
Local.set("token", accessToken)
|
||||
commit('SET_TOKEN', accessToken)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
},
|
||||
/**
|
||||
* 获取用户信息(昵称、头像、角色集合、权限集合)
|
||||
*/
|
||||
getUserInfo({commit, state}) {
|
||||
return new Promise(((resolve, reject) => {
|
||||
getUserInfo().then(response => {
|
||||
const {data} = response
|
||||
if (!data) {
|
||||
return reject('Verification failed, please Login again.')
|
||||
}
|
||||
const {nickname, avatar, roles, perms} = data
|
||||
if (!roles || roles.length <= 0) {
|
||||
reject('getUserInfo: roles must be a non-null array!')
|
||||
}
|
||||
commit('SET_NICKNAME', nickname)
|
||||
commit('SET_AVATAR', avatar)
|
||||
commit('SET_ROLES', roles)
|
||||
commit('SET_PERMS', perms)
|
||||
|
||||
resolve(data)
|
||||
}).catch(error => {
|
||||
reject(error)
|
||||
})
|
||||
})
|
||||
)
|
||||
},
|
||||
|
||||
/**
|
||||
* 注销
|
||||
*/
|
||||
logout({commit,state}){
|
||||
return new Promise(((resolve, reject) => {
|
||||
logout().then(()=>{
|
||||
Local.remove('token')
|
||||
commit('RESET_STATE')
|
||||
}).catch(error=>{
|
||||
reject(error)
|
||||
})
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user