login.js 1.77 KB
import { queryLogin, loginOut } from '@/services/login';
import { getUserInfo, getBosUserList } from '@/services/user';
import { message } from 'antd';
import { history } from 'umi';
import md5 from 'blueimp-md5';
import defaultSettings from '../../config/defaultSettings';
import { getDataMenus } from '@/utils/menu';
const { tokenKey, md5Key } = defaultSettings;
const Model = {
  namespace: 'login',
  state: {
    status: undefined,
  },
  effects: {
    //退出登录
    *logout({ payload }, { call, put, select }) {
      try {
        const res = yield call(loginOut);
        if (res.code === 0 && res.data) {
          if (!payload) {
            message.success('退出成功');
          }
          localStorage.removeItem(tokenKey);
          setTimeout(() => {
            window.location.href = '/user/login';
          }, 500);
        }
      } catch (err) {
        console.error(err);
      }
    },
    //登录
    *login({ payload }, { call, put }) {
      try {
        const res = yield call(queryLogin, payload);
        if (res.code === 0) {
          localStorage.setItem(tokenKey, res.data);
          // const userinfo = yield call(getUserInfo);
          // const { permissionVos = [] } = userinfo.data;
          // const dataMenus = getDataMenus(permissionVos);
          // console.log(dataMenus);
          // if (dataMenus.length) {
          //   history.replace(dataMenus[0].path);
          // } else {
          //   history.replace('/');
          // }
          history.replace('/');
          message.success('登录成功');
        }
      } catch (err) {
        console.error(err);
      }
    },
  },
  reducers: {
    changeLoginStatus(state, { payload }) {
      return { ...state, status: payload.status, type: payload.type };
    },
  },
};
export default Model;