... ... @@ -5,19 +5,17 @@
'use strict';
const library = '../../../library';
const helpers = require(`${library}/helpers`);
const helpers = global.yoho.helpers;
const service = require('../models/back-service');
const passportHelper = require('../models/passport-helper');
const moment = require('moment');
// 本地地址 localhost
helpers.urlFormat = helpers.fakeUrlFormat;
/**
* 找回密码主页面
*/
const indexPage = (req, res, next) => {
const index = (req, res, next) => {
service.indexPageDataAsync()
.then(result => {
res.render('back/index', Object.assign({
... ... @@ -169,7 +167,8 @@ const sendEmailPage = (req, res, next) => {
email : req.body.emailUrl
}
}));
}).catch(next);
})
.catch(next);
};
... ... @@ -361,7 +360,7 @@ const validateMobileInSession = (req, res, next) => {
};
module.exports = {
indexPage,
index,
validateInputAPI,
validateUserPage,
getUserInfoAPI,
... ...
... ... @@ -4,11 +4,10 @@
'use strict';
const library = '../../../library';
const captcha = require('../models/captcha-service');
const helpers = require(library + '/helpers');
const helpers = global.yoho.helpers;
const validateAPI = (req, res, next) => {
const requiredAPI = (req, res, next) => {
let captchaToken = (req.body.verifyCode || '').toLowerCase();
if (captchaToken === req.session.captcha) {
... ... @@ -21,7 +20,7 @@ const validateAPI = (req, res, next) => {
}
};
const validatePage = (req, res, next) => {
const requiredPage = (req, res, next) => {
let captchaToken = (req.body.verifyCode || '').toLowerCase();
if (captchaToken === req.session.captcha) {
... ... @@ -48,8 +47,8 @@ const generatePage = (req, res, next) => {
};
module.exports = {
validateAPI,
validatePage,
requiredAPI,
requiredPage,
validate,
generatePage
};
... ...
'use strict';
const sign = global.yoho.sign;
const api = global.yoho.API;
const api = global.yoho.API;
class Auth {
static signinByOpenID(nickname, openId, sourceType, shoppingKey) {
let param = {
nickname: nickname,
openId: openId,
nickname : nickname,
openId : openId,
source_type: sourceType,
method: 'app.passport.signinByOpenID'
method : 'app.passport.signinByOpenID'
};
if (shoppingKey) {
... ... @@ -22,11 +22,11 @@ class Auth {
static signinByWechat(nickname, openId, unionId, sourceType, shoppingKey) {
let param = {
nickname: nickname,
openId: openId,
unionId: unionId,
nickname : nickname,
openId : openId,
unionId : unionId,
source_type: sourceType,
method: 'app.passport.signinByWechat'
method : 'app.passport.signinByWechat'
};
if (shoppingKey) {
... ... @@ -38,7 +38,7 @@ class Auth {
static profile(uid) {
let param = {
uid: uid,
uid : uid,
method: 'app.passport.profile'
};
... ... @@ -48,22 +48,24 @@ class Auth {
static syncUserSession(uid, req, res) {
return Auth.profile(uid).then((userInfo) => {
let token = sign.makeToken(uid);
let data = userInfo.data;
let data = userInfo.data;
if (data) {
let uidCookie = `${data.profile_name}::${data.uid}::${data.vip_info.title}::${token}`;
req.session._TOKEN = token;
req.session._TOKEN = token;
req.session._LOGIN_UID = uid;
res.cookie('_UID', uidCookie, {
domain: 'yohobuy.com'
});
res.cookie('_TOKEN', token, {
domain: 'yohobuy.com'
});
}
});
req.session._TOKEN = token; // esline-disable-line
req.session._LOGIN_UID = uid; // esline-disable-line
res.cookie('_TOKEN', token, {
domain: 'yohobuy.com'
}); // esline-disable-line
}).catch(console.log);
}
}
... ...
... ... @@ -4,11 +4,7 @@
'use strict';
var API = require('../../../library/api').API;
const library = '../../../library';
var api = new API();
const api = global.yoho.API;
const YOHOBUY_URL = 'http://www.yohobuy.com/';
/**
... ...
/**
* Created by TaoHuang on 2016/6/27.
*/
'use strict';
/**
* 签名算法参考微信支付加密算法
* 参考链接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
*
*/
const SALT = "_+@#$%^";
/**
* 生成加密token
* @param data json
* @returns string
*/
const makeToken = (data) => {
let saltData = Object.assign(data, {key: this.SALT});
let str = this._packageObject(saltData);
return this._encodeMD5(str);
};
const validateToken = (data, token) => {
let saltData = Object.assign(data, {key: this.SALT});
let str = this._packageObject(saltData);
return this._encodeMD5(str) === token;
};
const _packageObject = (data) => {
return _.keys(data).sort().map(key => `${key}=${data[key]}`).join('&').toUpperCase();
};
const _encodeMD5 = (str) => {
const md5 = require('md5');
return md5(str).toUpperCase();
};
module.exports = {
makeToken,
validateToken
};
... ...
... ... @@ -4,7 +4,7 @@
'use strict';
const helpers = require(`${library}/helpers`);
const helpers = global.yoho.helpers;
const api = require('./back-api');
const Promise = require('bluebird');
const co = Promise.coroutine;
... ... @@ -13,7 +13,7 @@ const moment = require('moment');
const userService = require('./user-service');
const passportHelper = require('./passport-helper');
const authHelper = require('./auth-helper');
const backHelper = require('./back-helper');
const BACK_LEFT_BANNER_CODE = '3bbaf502c447a2ddad60879042e286d8'; //找回密码左边的banner
... ... @@ -90,7 +90,7 @@ const _sendCodeToMobileAsync = (areaCode, userInput) => {
}).catch(() => {
return {};
});
}
};
const sendCodeToUserAsync = (type, mobile, areaCode) => {
let sendTo = {
... ... @@ -149,7 +149,7 @@ const verifyCodyByMobileAsync = (area, mobile, mobileCode) => {
create_time: moment().unix()
};
data.code = new Buffer(authHelper.makeToken(data)).toString('base64');
data.code = new Buffer(backHelper.makeToken(data)).toString('base64');
return {
code : 200,
message: '验证成功',
... ... @@ -160,7 +160,7 @@ const verifyCodyByMobileAsync = (area, mobile, mobileCode) => {
};
const authRequest = (data, token) => {
if (!authHelper.validateToken(data, token)) {
if (!backHelper.validateToken(data, token)) {
return {};
}
... ...
... ... @@ -3,8 +3,7 @@
*/
'use strict';
const ServiceAPI = require(library + "/api").ServiceAPI;
const serviceAPI = new ServiceAPI();
const serviceAPI = global.yoho.ServiceAPI;
module.exports.getResourceAsync = (resourceCode) => {
return serviceAPI.get('/operations/api/v5/resource/get', {
... ...
... ... @@ -5,7 +5,7 @@
'use strict';
const helpers = require(library + '/helpers');
const helpers = global.yoho.helpers;
const Promise = require('bluebird');
const co = Promise.coroutine;
const _ = require('lodash');
... ...
... ... @@ -3,11 +3,8 @@
*/
'use strict';
const library = '../../../library';
const API = require('../../../library/api').API;
const _ = require('lodash');
const api = new API();
const _ = require('lodash');
const api = global.yoho.API;
const EMPTY = {};
/**
... ...
... ... @@ -22,24 +22,24 @@ router.get('/login/wechat/callback', login.wechat.callback);
* 找回密码首页信息
*/
// 找回密码首页
router.get('/back/index.html', Back.indexPage);
router.get('/back/index', Back.index);
// 实时验证输入是否正确
router.post('/back/authcode',
Captcha.validateAPI,
Captcha.requiredAPI,
Back.validateInputAPI,
Back.getUserInfoAPI);
// 提交按钮邮件API
router.post('/back/email',
Captcha.validatePage,
Captcha.requiredPage,
Back.validateUserPage,
Back.sendCodePage,
Back.saveInSession);
// 提交按钮手机API
router.post('/back/mobile',
Captcha.validatePage,
Captcha.requiredPage,
Back.validateUserPage,
Back.sendCodePage,
Back.saveInSession);
... ... @@ -58,18 +58,18 @@ router.get('/back/sendEmail.html',
// 验证手机短信页面
router.get('/back/verification.html',
Back.validateMobileInSession,
Captcha.validatePage,
Captcha.requiredPage,
Back.verifyCodeByMobilePage);
// 重新发送短信接口
router.post('/back/sendBackMobile',
Captcha.validateAPI,
Captcha.requiredAPI,
Back.validateMobileAPI,
Back.sendBackMobileAPI);
// 验证手机验证码接口
router.post('/back/backMobile',
Captcha.validateAPI,
Captcha.requiredAPI,
Back.verifyCodeByMobileAPI);
/**
... ...