'use strict'; const Fn = require('lodash/fp'); const authcode = require(`${global.utils}/authcode`); const crypto = global.yoho.crypto; function decrypt(word) { return authcode(word, '_SESSION_KEY', 0, 'decode'); } module.exports = () => { return (req, res, next) => { // 获得原始请求 url req.fullUrl = () => req.protocol + '://' + req.get('host') + req.originalUrl; // 个性化推荐id if (req.cookies._PRID) { req.user.prid = parseInt(`0${crypto.decrypt('', req.cookies._PRID)}`, 10); } // 始终从 session 中读取 uid let uid = req.session.LOGIN_UID_; if (uid && req.cookies._UID && req.cookies._SESSION_KEY) { let userInfo = req.cookies._UID.split('::'); let getName = Fn.nth(0); let getVip = Fn.nth(2); let getToken = Fn.nth(3); req.user.name = getName(userInfo); // 0 req.user.vip = getVip(userInfo); // 2 req.user.token = getToken(userInfo); // 3 req.user.mobile = req.session.USER_MOBILE; req.user.isStudent = req.cookies.isStudent || 0; req.user.uid = { toString() { return this.uid; }, uid: uid, sessionKey: decodeURIComponent(decrypt(req.cookies._SESSION_KEY)), isValid() { return this.uid && this.sessionKey; } }; } next(); // 记住我 // if (_.isEmpty(req.user) && req.cookies.isRemember === 'true' && req.cookies.remem) { // return cache.get(req.cookies.remem).then((result) => { // let data = JSON.parse(result || '{}'); // let area = data.area; // let account = data.account; // let password = data.password; // return loginService.signin('password', area, account, password); // }).then((result) => { // if (result.code !== 200) { // return Promise.reject(); // } // return loginService.syncUserSession(result.data.uid, req, res); // }).then(() => { // return res.redirect(req.fullUrl()); // }).catch(next); // } else { // return next(); // } }; };