### What problem does this PR solve? change language Issue link: #245 - [x] New Feature (non-breaking change which adds functionality)
70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import { Authorization } from '@/constants/authorization';
|
|
import i18n from '@/locales/config';
|
|
import userService from '@/services/userService';
|
|
import authorizationUtil from '@/utils/authorizationUtil';
|
|
import { message } from 'antd';
|
|
import { DvaModel } from 'umi';
|
|
|
|
export interface LoginModelState {
|
|
list: any[];
|
|
info: any;
|
|
visible: boolean;
|
|
}
|
|
|
|
const model: DvaModel<LoginModelState> = {
|
|
namespace: 'loginModel',
|
|
state: {
|
|
list: [],
|
|
info: {},
|
|
visible: false,
|
|
},
|
|
reducers: {
|
|
updateState(state, { payload }) {
|
|
return {
|
|
...state,
|
|
...payload,
|
|
};
|
|
},
|
|
},
|
|
effects: {
|
|
*login({ payload = {} }, { call }) {
|
|
const { data, response } = yield call(userService.login, payload);
|
|
const { retcode, data: res } = data;
|
|
const authorization = response.headers.get(Authorization);
|
|
if (retcode === 0) {
|
|
message.success(i18n.t('message.logged'));
|
|
const token = res.access_token;
|
|
const userInfo = {
|
|
avatar: res.avatar,
|
|
name: res.nickname,
|
|
email: res.email,
|
|
};
|
|
authorizationUtil.setItems({
|
|
Authorization: authorization,
|
|
userInfo: JSON.stringify(userInfo),
|
|
Token: token,
|
|
});
|
|
}
|
|
return retcode;
|
|
},
|
|
*register({ payload = {} }, { call }) {
|
|
const { data } = yield call(userService.register, payload);
|
|
console.log();
|
|
const { retcode } = data;
|
|
if (retcode === 0) {
|
|
message.success(i18n.t('message.registered'));
|
|
}
|
|
return retcode;
|
|
},
|
|
*logout({ payload = {} }, { call }) {
|
|
const { data } = yield call(userService.logout, payload);
|
|
const { retcode } = data;
|
|
if (retcode === 0) {
|
|
message.success(i18n.t('message.logout'));
|
|
}
|
|
return retcode;
|
|
},
|
|
},
|
|
};
|
|
export default model;
|