user.js 1.62 KB
const _ = require('lodash');
const authcode = require('../../utils/authcode');
const cookie = global.yoho.cookie;
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: _.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);
    }
    if (!req.user.uid && req.cookies._UID) {
      let sessionKey = req.cookies._SESSION_KEY &&
          authcode(req.cookies._SESSION_KEY, '_SESSION_KEY', 2592000000);

      req.user = {
        uid: _.parseInt(cookie.getUid(req)),
        sessionKey,
        appSessionType: req.session.SESSION_TYPE
      };
    }
  } 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: _.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.appSessionType') === 'miniapp') { // miniapp环境下调用接口使用web的version
    req.user.appVersion = config.appVersion;
  }
  next();
};