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.
69 lines
1.7 KiB
69 lines
1.7 KiB
'use strict';
|
|
|
|
import { ApiTable } from '$utils'
|
|
import { Request } from '@peace/utils'
|
|
|
|
export const INIT_AUTH = 'INIT_AUTH';
|
|
export function initAuth() {
|
|
const user = JSON.parse(sessionStorage.getItem('user')) || {};
|
|
return {
|
|
type: INIT_AUTH,
|
|
payload: {
|
|
user: user
|
|
}
|
|
};
|
|
}
|
|
|
|
export const REQUEST_LOGIN = 'REQUEST_LOGIN';
|
|
export const LOGIN_SUCCESS = 'LOGIN_SUCCESS';
|
|
export const LOGIN_ERROR = 'LOGIN_ERROR';
|
|
export function login(username, password) {
|
|
return dispatch => {
|
|
dispatch({ type: REQUEST_LOGIN });
|
|
|
|
if (!username || !password) {
|
|
dispatch({
|
|
type: LOGIN_ERROR,
|
|
payload: { error: '请输入账号名和密码' }
|
|
});
|
|
return Promise.resolve();
|
|
}
|
|
|
|
const url = ApiTable.login;
|
|
return Request.post(url, { username, password, p: '456' })
|
|
.then(user => {
|
|
sessionStorage.setItem('user', JSON.stringify(user));
|
|
dispatch({
|
|
type: LOGIN_SUCCESS,
|
|
payload: { user: user },
|
|
});
|
|
}, error => {
|
|
let { body } = error.response;
|
|
dispatch({
|
|
type: LOGIN_ERROR,
|
|
payload: {
|
|
error: body && body.message ? body.message : '登录失败'
|
|
}
|
|
})
|
|
});
|
|
}
|
|
}
|
|
|
|
export const LOGOUT = 'LOGOUT';
|
|
export function logout(user) {
|
|
const token = user.token;
|
|
const url = ApiTable.logout;
|
|
sessionStorage.removeItem('user');
|
|
Request.put(url, {
|
|
token: token
|
|
});
|
|
return {
|
|
type: LOGOUT
|
|
};
|
|
}
|
|
|
|
export default {
|
|
initAuth,
|
|
login,
|
|
logout
|
|
}
|