Authored by 陈峰

Merge branch 'feature/session' into 'release/5.5.1'

Feature/session



See merge request !405
... ... @@ -13,7 +13,25 @@ const headerModel = require('../../../doraemon/models/header'); // 头部model
const _ = require('lodash');
const urlP = require('url');
/**
* 处理旧版本的app兼容新接口
* @param {*} url url
* @param {*} data data
* @param {*} param param
* @param {*} method method
*/
const middleApi = (url, data, param, method) => {
try {
let promise = method === 'post' ? api.post : api.get;
if (!_.get(data, 'uid.sessionKey', '') && data.uid) {
data.app_version = '5.5.0';
}
return promise.call(api, url, data, param);
} catch (err) {
return null;
}
};
const getResource = code => {
return serviceApi.get('operations/api/v5/resource/get', {
content_code: code,
... ... @@ -21,43 +39,43 @@ const getResource = code => {
});
};
const vip = (limit) => {
return api.get('', {
return middleApi('', {
method: 'app.student.vip',
limit: limit || 60
});
};
const verifiedStudentTotal = () => {
return api.get('', {
return middleApi('', {
method: 'app.student.verifiedStudentTotal'
});
};
const getProvince = () => {
return api.get('', {
return middleApi('', {
method: 'app.studentMarket.getAddressList'
}, {
cache: true
});
};
const getSchool = code => {
return api.get('', {
return middleApi('', {
method: 'app.studentMarket.getSchoolInfoList',
areaCode: code
});
};
const getEducationLevelList = () => {
return api.get('', {
return middleApi('', {
method: 'app.studentMarket.getEducationLevelList'
});
};
const userAcquireStatus = (uid, couponIds) => {
return api.get('', {
return middleApi('', {
method: 'app.coupons.userAcquireStatus',
uid: uid,
couponIds: couponIds
});
};
const verifyStudent = (uid, collegename, educationdegree, enrollmentyear) => {
return api.get('', {
return middleApi('', {
method: 'app.student.verifyStudent',
uid: uid,
client_type: 'h5',
... ... @@ -67,7 +85,7 @@ const verifyStudent = (uid, collegename, educationdegree, enrollmentyear) => {
});
};
const verifyIdentity = (uid, certno, name, pageurl) => {
return api.get('', {
return middleApi('', {
method: 'app.student.verifyIdentity',
uid: uid,
client_type: 'h5',
... ... @@ -83,7 +101,7 @@ const getUser = (uid) => {
data: {}
});
}
return api.get('', {
return middleApi('', {
method: 'app.passport.profile',
uid: uid
}, {
... ... @@ -100,6 +118,12 @@ const getPlatForm = (req) => {
let arrs = [];
let isNewVersion = false;
const isProduction = process.env.NODE_ENV === 'production';
let sessionKey = req.query.session_key || req.session.SESSION_KEY;
let uid;
if (sessionKey && !req.session.SESSION_KEY) {
req.session.SESSION_KEY = sessionKey;
}
// console.log(req.get('User-Agent'));
// console.log(req.query.uid);
... ... @@ -137,8 +161,16 @@ const getPlatForm = (req) => {
if (isProduction) {
yoho.http = 'https:';
}
yoho.uid = uids && uids.length === 2 ? uids[1] : ''; // 8041246
yoho.uid = req.user.uid || yoho.uid || req.query.uid || '';
uid = uids && uids.length === 2 ? uids[1] : ''; // 8041246
uid = req.user.uid && req.user.uid.toString() || uid || req.query.uid || req.cookies.studentUID || '';
if (uid) {
yoho.uid = {
toString: () => {
return uid;
},
sessionKey: sessionKey
};
}
yoho.isLogin = yoho.uid ? true : false;
return co(function*() {
let data = yield getUser(yoho.uid);
... ... @@ -312,6 +344,9 @@ exports.register = (req, res, next) => {
res.redirect(helpers.urlFormat(refer));
} else {
if (req.query.uid) {
res.cookie('studentUID', req.query.uid);
}
res.render('register', {
title: '认证信息填写',
isApp: req.__USER__.isApp,
... ... @@ -363,7 +398,6 @@ exports.verifyidentity = (req, res, next) => {
shareId: shareId
}) + '&';
verifyIdentity(uid, params.cert_no, params.name, url).then((result) => {
res.json(result);
}).catch(next);
... ... @@ -371,7 +405,7 @@ exports.verifyidentity = (req, res, next) => {
// 添加分享成功记录
const addStudent = (ownuid, shareId) => {
return api.get('', {
return middleApi('', {
method: 'app.student.addShare',
uid: ownuid,
shareUid: shareId
... ...
... ... @@ -29,7 +29,7 @@ const _banksInit = () => {
// 还款列表公共处理块
const _repaymentList = (req, res, opt, params) => {
params = _.assign({
uid: req.cookies.installmentUid
uid: req.user.uid
}, params);
installmentModel.getQueryAmtList(params).then((result) => {
... ... @@ -49,7 +49,8 @@ const _repaymentList = (req, res, opt, params) => {
// 开通分期首页
const index = (req, res) => {
let uid = req.query.uid;
console.log(req.query.session_key);
let uid = req.user.uid;
Promise.all([
installmentModel.getStauts(uid),
... ... @@ -124,7 +125,7 @@ const index = (req, res) => {
if (!result) {
return;
}
res.cookie('installmentUid', req.query.uid);
res.cookie('installmentUid', uid.toString());
res.cookie('yhChannel', req.query.yh_channel);
res.cookie('udid', req.query.udid);
res.cookie('clientType', req.query.client_type);
... ... @@ -172,7 +173,7 @@ const getInstallmentGoods = (req, res) => {
// 开通结果显示
const review = (req, res) => {
let openStatus = req.query.status || false;
let uid = req.query.uid;
let uid = req.user.uid;
let data = {
module: 'home',
page: 'installment',
... ... @@ -302,7 +303,7 @@ const repayRecordPage = (req, res) => {
// ajax 请求还款记录
const getRepayRecord = (req, res) => {
let params = _.assign({
uid: req.cookies.installmentUid,
uid: req.user.uid,
pageNo: req.query.page || 1
});
... ... @@ -328,7 +329,7 @@ const account = (req, res) => {
var url = req.yoho.isApp || req.cookies.appVersion ? '/home/installment/account' : '/home/installment/bank-card';
if (req.cookies.appVersion) {
var versions = req.cookies.appVersion.split('.');
let versions = req.cookies.appVersion.split('.');
if (versions.length >= 2) {
if (versions[0] < 5 || (parseInt(versions[0], 10) === 5 && versions[1] <= 1)) {
... ... @@ -367,7 +368,7 @@ const bindCard = (req, res) => {
// 添加新银行卡请求
const postAccount = (req, res) => {
var params = _.assign({
uid: req.cookies.installmentUid
uid: req.user.uid
}, req.query);
installmentModel.postAccount(params).then((result) => {
... ... @@ -410,7 +411,7 @@ function getRealIP(req) {
const activateService = (req, res) => {
installmentModel.activateService({
uid: req.cookies.installmentUid,
uid: req.user.uid,
userName: req.body.userName,
identityCardNo: req.body.identityCardNo,
cardNo: req.body.cardNo,
... ... @@ -434,7 +435,7 @@ const activateService = (req, res) => {
const getBankInfo = (req, res) => {
installmentModel.getBankInfo({
cardNo: req.query.cardNo,
uid: req.cookies.installmentUid
uid: req.user.uid
}).then((result)=> {
res.json(result);
}).catch(() => {
... ... @@ -445,7 +446,7 @@ const getBankInfo = (req, res) => {
};
const verifyCode = (req, res) => {
installmentModel.sendVerifyCode(req.cookies.installmentUid || 1, req.query.mobile).then((result)=> {
installmentModel.sendVerifyCode(req.user.uid || 1, req.query.mobile).then((result)=> {
res.json(result);
}).catch(() => {
_serverCrash(res, {
... ... @@ -467,7 +468,7 @@ const orderIndex = (req, res) => {
const orderList = (req, res) => {
const params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
type: req.query.type || 1,
page: req.query.page || 1,
limit: req.query.limit || 10
... ... @@ -503,7 +504,7 @@ const orderList = (req, res) => {
const orderDetail = (req, res) => {
const params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
orderCode: req.params.id
};
... ... @@ -597,7 +598,7 @@ const orderDetail = (req, res) => {
// 还款详情
const repayDetail = (req, res) => {
let params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
rePayNo: req.query.id || '',
pageNo: 1
};
... ... @@ -643,7 +644,7 @@ const totalAmount = (req, res) => {
// 检查验证码
const checkVerifyCode = (req, res) => {
installmentModel.checkVerifyCode(req.cookies.installmentUid, req.query.mobile, req.query.code).then((result) => {
installmentModel.checkVerifyCode(req.user.uid, req.query.mobile, req.query.code).then((result) => {
res.json(result);
}).catch(() => {
_serverCrash(res, {
... ... @@ -659,7 +660,7 @@ const serverCrash = (req, res) => {
// 银行卡列表
const bankCard = (req, res) => {
let uid = req.cookies.installmentUid;
let uid = req.user.uid;
installmentModel.getBankCards(uid).then((result) => {
res.render('installment/bank-card', {
... ... @@ -680,7 +681,7 @@ const bankCard = (req, res) => {
// 银行卡详情
const cardDetail = (req, res) => {
let uid = req.cookies.installmentUid;
let uid = req.user.uid;
let cardIdNo = req.query.cardIdNo;
installmentModel.getCardDetail(uid, cardIdNo).then((result) => {
... ... @@ -703,7 +704,7 @@ const cardDetail = (req, res) => {
// 删除绑定
const delBankCard = (req, res) => {
let params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
cardIdNo: req.query.cardIdNo
};
... ... @@ -720,7 +721,7 @@ const delBankCard = (req, res) => {
// 切换银行卡绑定
const setMasterCard = (req, res) => {
let params = {
uid: req.cookies.installmentUid,
uid: req.user.uid,
cardIdNo: req.query.cardIdNo
};
... ... @@ -734,6 +735,22 @@ const setMasterCard = (req, res) => {
});
};
const sessionKeyAuth = (req, res, next) => {
let uid = req.query.uid || req.cookies.installmentUid;
let sessionKey = req.query.session_key || req.session.SESSION_KEY;
if (sessionKey && !req.session.SESSION_KEY) {
req.session.SESSION_KEY = uid.sessionKey;
}
req.user.uid = {
toString: () => {
return uid;
},
sessionKey: sessionKey
};
next();
};
module.exports = {
index,
review,
... ... @@ -763,5 +780,6 @@ module.exports = {
postAccount,
cardDetail,
delBankCard,
setMasterCard
setMasterCard,
sessionKeyAuth
};
... ...
... ... @@ -19,6 +19,26 @@ const codeContent = {
advertisement: 'f3fe0793a7d59479542a14b15359c47d'
};
/**
* 处理旧版本的app兼容新接口
* @param {*} url url
* @param {*} data data
* @param {*} param param
* @param {*} method method
*/
const middleApi = (url, data, param, method) => {
try {
let promise = method === 'post' ? api.post : api.get;
if (!_.get(data, 'uid.sessionKey', '') && data.uid) {
data.app_version = '5.5.0';
}
return promise.call(api, url, data, param);
} catch (err) {
return null;
}
};
// 处理还款列表数据
const _processAmtList = (listData, queryDays) => {
let overduecount = 0;
... ... @@ -197,7 +217,7 @@ const _DEBUG = false;// true;
// 获取分期开通状态
const getStauts = (uid) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getStatus',
uid: uid
}, {
... ... @@ -214,7 +234,7 @@ const getStauts = (uid) => {
// 获取用户可用额度信息
const getQueryCreditInfo = (uid) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.queryCreditLimit',
uid: uid
}, {
... ... @@ -231,7 +251,7 @@ const getQueryCreditInfo = (uid) => {
// 获取用户待还款金额
const getQueryAmtInfo = (uid) => {
return api.get('', {
return middleApi('', {
method: 'app.order.queryAmtInfo',
uid: uid
}, {
... ... @@ -250,7 +270,7 @@ const getQueryAmtInfo = (uid) => {
// 获取用户待还列表信息 queryDays -1:逾期待还;0:全部待还;7:七日待还;30:本月待还
const getQueryAmtList = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'app.order.queryAmtList',
pageSize: '20'
}, params), {
... ... @@ -267,7 +287,7 @@ const getQueryAmtList = (params) => {
// 分期专享推荐商品
const getSearchIntallment = (params) => {
return api.post('', {
return middleApi('', {
method: 'app.search.instalment',
limit: '50',
order: 's_t_desc',
... ... @@ -275,7 +295,7 @@ const getSearchIntallment = (params) => {
}, {
cache: true,
timeout: API_TIMEOUT
}).then((result) => {
}, 'post').then((result) => {
if (result && result.code === 200) {
let goods = productProcess.processProductList(result.data.product_list);
... ... @@ -300,7 +320,7 @@ const getSearchIntallment = (params) => {
* @param mobile 手机号码
*/
const sendVerifyCode = (uid, mobile) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getSnsCheckCode',
uid: uid,
mobile: mobile,
... ... @@ -323,7 +343,7 @@ const sendVerifyCode = (uid, mobile) => {
* @returns {*}
*/
const activateService = (params) => {
return api.get('', Object.assign({
return middleApi('', Object.assign({
method: 'user.instalment.activate'
}, params), {
timeout: 30000
... ... @@ -338,7 +358,7 @@ const activateService = (params) => {
* @returns {*}
*/
const getBankInfo = (params) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getBankInfoByCardNo',
cardNo: params.cardNo,
uid: params.uid
... ... @@ -361,7 +381,7 @@ const getInstallmentOrders = (params) => {
const method = 'app.SpaceOrders.getInstallment';
if (!_DEBUG) {
return api.get('', {
return middleApi('', {
method: method,
uid: params.uid,
type: params.type || 1,
... ... @@ -379,7 +399,7 @@ const getInstallmentOrders = (params) => {
// 还款记录查询
const getQueryRePayList = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'app.order.queryRePayList',
pageSize: '20'
}, params), {
... ... @@ -396,7 +416,7 @@ const getQueryRePayList = (params) => {
// 账号管理
const getBankCards = (uid) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getBankCards',
uid: uid
}, {
... ... @@ -422,7 +442,7 @@ const getBankCards = (uid) => {
const getInstallmentOrderDetail = (params) => {
const method = 'app.SpaceOrders.installDetail';
return api.get('', {
return middleApi('', {
method: method,
uid: params.uid,
order_code: params.orderCode
... ... @@ -443,7 +463,7 @@ const getInstallmentOrderDetail = (params) => {
const totalAmount = (params) => {
const method = 'app.order.calPrice';
return api.get('', {
return middleApi('', {
method: method,
prices: params
}, {
... ... @@ -457,7 +477,7 @@ const totalAmount = (params) => {
const checkVerifyCode = (uid, mobile, code) => {
const method = 'user.instalment.validateSnsCheckCode';
return api.get('', {
return middleApi('', {
uid: uid,
method: method,
mobile: mobile,
... ... @@ -472,7 +492,7 @@ const checkVerifyCode = (uid, mobile, code) => {
// 添加银行卡请求
const postAccount = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'user.instalment.bindingCards'
}, params), {
timeout: 6000
... ... @@ -481,7 +501,7 @@ const postAccount = (params) => {
// 获取银行卡详情
const getCardDetail = (uid, cardIdNo) => {
return api.get('', {
return middleApi('', {
method: 'user.instalment.getBankCardDetail',
uid: uid,
cardIdNo: cardIdNo
... ... @@ -499,7 +519,7 @@ const getCardDetail = (uid, cardIdNo) => {
// 解除银行卡绑定
const delBankCard = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'user.instalment.unbindCard'
}, params)).then((res) => {
return res;
... ... @@ -508,7 +528,7 @@ const delBankCard = (params) => {
// 切换银行卡主卡
const setMasterCard = (params) => {
return api.get('', _.assign({
return middleApi('', _.assign({
method: 'user.instalment.toggleCard'
}, params)).then((res) => {
return res;
... ... @@ -517,7 +537,7 @@ const setMasterCard = (params) => {
// 公告
const getNotices = () => {
return api.get('', {
return middleApi('', {
method: 'app.resources.getNotices',
position: 8,
client_type: 'iphone'
... ... @@ -536,6 +556,7 @@ const getNotices = () => {
});
};
module.exports = {
getStauts,
getQueryCreditInfo,
... ...
... ... @@ -104,39 +104,39 @@ router.get('/onlineservice', onlineService.getOnlineServiceInfo);
router.get('/onlineservicedetail', onlineService.getOnlineServiceDetail);
// 分期付款
router.get('/installment/index', installment.index); // 开通分期首页
router.get('/installment/review', installment.review); // 开通分期首页
router.get('/installment/starting-service', installment.startingService); // 分期付款开通
router.get('/installment/starting-service/verify-code', installment.verifyCode);
router.get('/installment/starting-service/check-verify-code', installment.checkVerifyCode);
router.get('/installment/get-goods', installment.getInstallmentGoods); // ajax请求分期专享商品数据
router.get('/installment/repay/overdue', installment.overdueList); // 逾期未还款列表
router.get('/installment/repay/7daylist', installment.sevenDayList); // 7日待还款列表
router.get('/installment/repay/month', installment.monthRepayList); // 本月待还款列表
router.get('/installment/repay/total', installment.totalRepayList); // 待还总金额列表
router.get('/installment/repay/record', installment.repayRecordPage); // 还款记录
router.get('/installment/repay/get-record', installment.getRepayRecord); // ajax请求还款记录
router.get('/installment/repay/detail', installment.repayDetail); // 还款详情
router.get('/installment/account', installment.account); // 账户管理
router.get('/installment/bind-card', installment.bindCard); // 添加新银行卡
router.get('/installment/post-account', installment.postAccount); // 添加新卡请求
router.get('/installment/bank-info', installment.getBankInfo);
router.post('/installment/activate-service', installment.activateService);
router.get('/installment/order', installment.orderIndex);
router.get('/installment/order.html', installment.orderList);
router.get('/installment/order/:id', installment.orderDetail);
router.get('/installment/total-amount.json', installment.totalAmount);
router.get('/installment/help', installment.help);// 帮助静态页面
router.get('/installment/agreement', installment.agreement);// 服务协议静态页面
router.get('/installment/server-crash', installment.serverCrash); // 服务器崩溃
router.get('/installment/bank-card', installment.bankCard); // 银行卡列表
router.get('/installment/card-detail', installment.cardDetail); // 银行卡详情
router.get('/installment/delBankCard', installment.delBankCard); // 删除绑定
router.get('/installment/setMasterCard', installment.setMasterCard); // 切换主卡
router.get('/installment/index', installment.sessionKeyAuth, installment.index); // 开通分期首页
router.get('/installment/review', installment.sessionKeyAuth, installment.review); // 开通分期首页
router.get('/installment/starting-service', installment.sessionKeyAuth, installment.startingService); // 分期付款开通
router.get('/installment/starting-service/verify-code', installment.sessionKeyAuth, installment.verifyCode);
router.get('/installment/starting-service/check-verify-code', installment.sessionKeyAuth, installment.checkVerifyCode);
router.get('/installment/get-goods', installment.sessionKeyAuth, installment.getInstallmentGoods); // ajax请求分期专享商品数据
router.get('/installment/repay/overdue', installment.sessionKeyAuth, installment.overdueList); // 逾期未还款列表
router.get('/installment/repay/7daylist', installment.sessionKeyAuth, installment.sevenDayList); // 7日待还款列表
router.get('/installment/repay/month', installment.sessionKeyAuth, installment.monthRepayList); // 本月待还款列表
router.get('/installment/repay/total', installment.sessionKeyAuth, installment.totalRepayList); // 待还总金额列表
router.get('/installment/repay/record', installment.sessionKeyAuth, installment.repayRecordPage); // 还款记录
router.get('/installment/repay/get-record', installment.sessionKeyAuth, installment.getRepayRecord); // ajax请求还款记录
router.get('/installment/repay/detail', installment.sessionKeyAuth, installment.repayDetail); // 还款详情
router.get('/installment/account', installment.sessionKeyAuth, installment.account); // 账户管理
router.get('/installment/bind-card', installment.sessionKeyAuth, installment.bindCard); // 添加新银行卡
router.get('/installment/post-account', installment.sessionKeyAuth, installment.postAccount); // 添加新卡请求
router.get('/installment/bank-info', installment.sessionKeyAuth, installment.getBankInfo);
router.post('/installment/activate-service', installment.sessionKeyAuth, installment.activateService);
router.get('/installment/order', installment.sessionKeyAuth, installment.orderIndex);
router.get('/installment/order.html', installment.sessionKeyAuth, installment.orderList);
router.get('/installment/order/:id', installment.sessionKeyAuth, installment.orderDetail);
router.get('/installment/total-amount.json', installment.sessionKeyAuth, installment.totalAmount);
router.get('/installment/help', installment.sessionKeyAuth, installment.help);// 帮助静态页面
router.get('/installment/agreement', installment.sessionKeyAuth, installment.agreement);// 服务协议静态页面
router.get('/installment/server-crash', installment.sessionKeyAuth, installment.serverCrash); // 服务器崩溃
router.get('/installment/bank-card', installment.sessionKeyAuth, installment.bankCard); // 银行卡列表
router.get('/installment/card-detail', installment.sessionKeyAuth, installment.cardDetail); // 银行卡详情
router.get('/installment/delBankCard', installment.sessionKeyAuth, installment.delBankCard); // 删除绑定
router.get('/installment/setMasterCard', installment.sessionKeyAuth, installment.setMasterCard); // 切换主卡
router.get('/getaddress.json', addressController.newGetAddress); // TODO 模拟省数据
... ...
... ... @@ -254,7 +254,7 @@ const bind = {
let refer = helpers.urlFormat('/passport/bind/success?type=bind');
if (result && result.code && result.code === 200 && result.data.uid) {
return AuthHelper.syncUserSession(result.data.uid, req, res).then(() => {
return AuthHelper.syncUserSession(result.data.uid, req, res, result.data.session_key).then(() => {
result.data.refer = refer;
return result;
});
... ... @@ -288,7 +288,7 @@ const bind = {
let refer = helpers.urlFormat('/passport/bind/success', { sourceType: sourceType });
if (result && result.code && result.code === 200 && result.data.uid) {
return AuthHelper.syncUserSession(result.data.uid, req, res).then(() => {
return AuthHelper.syncUserSession(result.data.uid, req, res, result.data.session_key).then(() => {
result.data.refer = refer;
return result;
});
... ...
... ... @@ -281,7 +281,7 @@ const local = {
code: 200,
data: user
});
});
}).catch(next);
}
})(req, res, next);
},
... ...
... ... @@ -429,7 +429,7 @@ let setPassword = (req, res, next) => {
resultCopy = result;
return AuthHelper.syncUserSession(result.data.uid, req, res);
return AuthHelper.syncUserSession(result.data.uid, req, res, result.data.session_key);
}).then(() => {
if (!resultCopy) {
return;
... ...
... ... @@ -376,7 +376,7 @@ exports.check = (req, res, next) => {
return Promise.reject(info);
}
return AuthHelper.syncUserSession(info.data.uid, req, res);
return AuthHelper.syncUserSession(info.data.uid, req, res, info.data.session_key);
})
.then(() => {
res.json({
... ... @@ -444,7 +444,7 @@ exports.password = (req, res, next) => {
}
resultCopy = result;
return AuthHelper.syncUserSession(result.data.uid, req, res);
return AuthHelper.syncUserSession(result.data.uid, req, res, result.data.session_key);
}).then(() => {
if (!resultCopy) {
return;
... ...
... ... @@ -63,12 +63,25 @@ class Auth {
}
static syncUserSession(uid, req, res, sessionKey) {
let userId = {
toString: () => {
return uid;
}
};
if (sessionKey) {
global.yoho.cache.set(`java_session_key:${uid}`, sessionKey).catch(() => {
global.yoho.logger.error('write session key fail');
// 弃用
// global.yoho.cache.set(`java_session_key:${uid}`, sessionKey).catch(() => {
// global.yoho.logger.error('write session key fail');
// });
req.session.SESSION_KEY = sessionKey;
res.cookie('_SESSION_KEY', aes.encryptionUid(sessionKey), {
domain: 'yohobuy.com',
expires: new Date(Date.now() + 2592000000) // 有效期一年
});
userId.sessionKey = sessionKey;
}
return Auth.profile(uid).then((userInfo) => {
return Auth.profile(userId).then((userInfo) => {
let salt = uuid.v4().substr(0, 8);
let saltedUid = uid + salt;
... ...
... ... @@ -10,13 +10,12 @@ const isProduction = process.env.NODE_ENV === 'production';
const isTest = process.env.NODE_ENV === 'test';
const domains = {
api: 'http://api-test3.yohops.com:9999/',
service: 'http://service-test3.yohops.com:9999/',
liveApi: 'http://testapi.live.yohops.com:9999/',
singleApi: 'http://api-test3.yohops.com:9999/',
// api: 'http://api.yoho.yohoops.org/',
// service: 'http://service.yoho.yohoops.org/',
api: 'http://dev-api.yohops.com:9999/',
service: 'http://dev-service.yohops.com:9999/',
// liveApi: 'http://api.live.yoho.cn/',
// singleApi: 'http://single.yoho.cn/',
... ... @@ -26,7 +25,7 @@ const domains = {
module.exports = {
app: 'h5',
appVersion: '5.5.0', // 调用api的版本
appVersion: '5.5.1', // 调用api的版本
port: 6001,
siteUrl: '//m.yohobuy.com',
assetUrl: '//127.0.0.1:5001',
... ...
... ... @@ -4,6 +4,7 @@
*/
const headerModel = require('../models/header');
const logger = global.yoho.logger;
const helpers = global.yoho.helpers;
const forceNoCache = (res) => {
if (res && !res.finished) {
... ... @@ -47,10 +48,18 @@ exports.notFound = () => {
*/
exports.serverError = () => {
return (err, req, res, next) => {
console.log(err);
forceNoCache(res);
if (err && err.code === 401) {
if (req.xhr) {
return res.json(err);
} else {
return res.redirect(helpers.urlFormat('/signin.html', {
refer: req.originalUrl
}));
}
}
logger.error(`error at path: ${req.url}`);
logger.error(err);
... ...
... ... @@ -2,13 +2,19 @@
const _ = require('lodash');
const cookie = global.yoho.cookie;
const crypto = global.yoho.crypto;
module.exports = () => {
return (req, res, next) => {
// 从 SESSION 中获取到当前登录用户的 UID
if (req.session && _.isNumber(req.session.LOGIN_UID)) {
req.user.uid = req.session.LOGIN_UID;
// 不要使用 === 判断uid的值,如果需要判断使用 ==
req.user.uid = {
toString: () => {
return req.session.LOGIN_UID;
},
sessionKey: req.session.SESSION_KEY
};
let userData = _.get(req.session, 'USER', {});
_.merge(req.user, userData);
... ... @@ -16,7 +22,15 @@ module.exports = () => {
// session 没有读取到的时候,从 cookie 读取 UID
if (!req.user.uid && req.cookies._UID) {
req.user.uid = cookie.getUid(req);
// 不要使用 === 判断uid的值,如果需要判断使用 ==
let sessionKey = req.cookies._SESSION_KEY && crypto.decrypt('yoho9646abcdefgh', req.cookies._SESSION_KEY);
req.user.uid = {
toString: () => {
return cookie.getUid(req);
},
sessionKey
};
}
next();
... ...
... ... @@ -49,7 +49,7 @@
"uuid": "^2.0.3",
"xml2js": "^0.4.17",
"yoho-express-session": "^2.0.0",
"yoho-node-lib": "^0.2.8",
"yoho-node-lib": "=0.2.8",
"yoho-zookeeper": "^1.0.8"
},
"devDependencies": {
... ...
/**
* 全局引用js
* @author: feng.chen<feng.chen@yoho.cn>
* @date: 2017/03/15
*/
const $ = require('yoho-jquery');
const cookie = require('yoho-cookie');
var yoho = require('./yoho-app');
// 初始化
// 注册ajaxError处理服务端401状态
$(document).ajaxError((event, xhr) => {
if (xhr.status === 401) {
cookie.remove('_UID');
cookie.remove('_TOKEN');
if (yoho.isApp) {
yoho.goLogin(window.location.href);
} else {
window.location.href = `/signin.html?refer=${encodeURIComponent(window.location.href)}`;
}
}
});
... ...
... ... @@ -22,7 +22,8 @@ shelljs.ls(path.join(__dirname, 'js/**/*.page.js')).forEach((f) => {
// 生成规则:module.page: './js/module/xx.page.js'
entries[`${dir[0]}.${dir[1].match(/(.*).page.js/)[1]}`] = `./js/${dir.join('/')}`;
entries.libs = [
'yoho-jquery'
'yoho-jquery',
'./js/global.js' // 全局引用js
];
});
... ...