user.js 1.31 KB
const _ = require('lodash');
const config = global.yoho.config;

module.exports = (req, res, next) => {
  if (!req.yoho.isApp) {
    if (req.session && _.isNumber(req.session.LOGIN_UID_)) {
      // 调用接口传参时切勿使用toString获得字符串
      req.user.uid = {
        toString: () => {
          return _.parseInt(req.session.LOGIN_UID_);
        },
        sessionKey: req.session.SESSION_KEY,
        appSessionType: req.session.SESSION_TYPE
      };
      let userData = _.get(req.session, 'USER', {});

      _.merge(req.user, userData);
    }
  } else if (!req.user.uid &&
    req.cookies.app_uid &&
    req.cookies.app_uid !== '0' &&
    req.cookies.app_session_key &&
    req.cookies.app_version &&
    req.cookies.app_client_type) {
    // 调用接口传参时切勿使用toString获得字符串
    req.user.uid = {
      toString: () => {
        return _.parseInt(req.cookies.app_uid);
      },
      sessionKey: req.cookies.app_session_key,
      appVersion: req.cookies.app_version || config.appVersion,
      appSessionType: req.cookies.app_client_type
    };
  }

  res.locals.isLogin = Boolean(req.user.uid); // 用户是否登录
  if (_.get(req, 'user.uid.appSessionType') === 'miniapp') { // miniapp环境下调用接口使用web的version
    req.user.uid.appVersion = config.appVersion;
  }
  next();
};