初始化 antd-pro
This commit is contained in:
78
admin-web/src/models/login.js
Normal file
78
admin-web/src/models/login.js
Normal file
@@ -0,0 +1,78 @@
|
||||
import { routerRedux } from 'dva/router';
|
||||
import { stringify } from 'qs';
|
||||
import { fakeAccountLogin, getFakeCaptcha } from '@/services/api';
|
||||
import { setAuthority } from '@/utils/authority';
|
||||
import { getPageQuery } from '@/utils/utils';
|
||||
import { reloadAuthorized } from '@/utils/Authorized';
|
||||
|
||||
export default {
|
||||
namespace: 'login',
|
||||
|
||||
state: {
|
||||
status: undefined,
|
||||
},
|
||||
|
||||
effects: {
|
||||
*login({ payload }, { call, put }) {
|
||||
const response = yield call(fakeAccountLogin, payload);
|
||||
yield put({
|
||||
type: 'changeLoginStatus',
|
||||
payload: response,
|
||||
});
|
||||
// Login successfully
|
||||
if (response.status === 'ok') {
|
||||
reloadAuthorized();
|
||||
const urlParams = new URL(window.location.href);
|
||||
const params = getPageQuery();
|
||||
let { redirect } = params;
|
||||
if (redirect) {
|
||||
const redirectUrlParams = new URL(redirect);
|
||||
if (redirectUrlParams.origin === urlParams.origin) {
|
||||
redirect = redirect.substr(urlParams.origin.length);
|
||||
if (redirect.match(/^\/.*#/)) {
|
||||
redirect = redirect.substr(redirect.indexOf('#') + 1);
|
||||
}
|
||||
} else {
|
||||
window.location.href = redirect;
|
||||
return;
|
||||
}
|
||||
}
|
||||
yield put(routerRedux.replace(redirect || '/'));
|
||||
}
|
||||
},
|
||||
|
||||
*getCaptcha({ payload }, { call }) {
|
||||
yield call(getFakeCaptcha, payload);
|
||||
},
|
||||
|
||||
*logout(_, { put }) {
|
||||
yield put({
|
||||
type: 'changeLoginStatus',
|
||||
payload: {
|
||||
status: false,
|
||||
currentAuthority: 'guest',
|
||||
},
|
||||
});
|
||||
reloadAuthorized();
|
||||
yield put(
|
||||
routerRedux.push({
|
||||
pathname: '/user/login',
|
||||
search: stringify({
|
||||
redirect: window.location.href,
|
||||
}),
|
||||
})
|
||||
);
|
||||
},
|
||||
},
|
||||
|
||||
reducers: {
|
||||
changeLoginStatus(state, { payload }) {
|
||||
setAuthority(payload.currentAuthority);
|
||||
return {
|
||||
...state,
|
||||
status: payload.status,
|
||||
type: payload.type,
|
||||
};
|
||||
},
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user