Authored by yyq

Merge branch 'release/1.0' of git.yoho.cn:fe/yoho-blk into release/1.0

... ... @@ -6,12 +6,12 @@
'use strict';
const helpers = global.yoho.helpers;
const service = require('../models/back-service');
const passportHelper = require('../models/passport-helper');
const BackService = require('../models/back-service');
const PassportHelper = require('../models/passport-helper');
const _ = require('lodash');
const index = (req, res, next) => {
service.indexPageDataAsync()
BackService.indexPageDataAsync()
.then(result => {
res.display('back/index', Object.assign({
module: 'passport',
... ... @@ -27,7 +27,7 @@ const validateInputAPI = (req, res, next) => {
let userInput = req.body.phoneNum || '';
let areaCode = (req.body.area || '86').replace('+', '');
service.validateEmailOrMobileAsync(userInput, areaCode)
BackService.validateEmailOrMobileAsync(userInput, areaCode)
.then(result => {
req.inputInfo = result;
next();
... ... @@ -44,7 +44,7 @@ const validateInputPage = (req, res, next) => {
let userInput = req.body.phoneNum || '';
let areaCode = (req.body.area || '86').replace('+', '');
service.validateEmailOrMobileAsync(userInput, areaCode)
BackService.validateEmailOrMobileAsync(userInput, areaCode)
.then(result => {
req.inputInfo = result;
next();
... ... @@ -57,7 +57,7 @@ const validateInputPage = (req, res, next) => {
const getUserInfoAPI = (req, res, next) => {
let inputInfo = req.inputInfo;
service.findUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area)
BackService.findUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area)
.then(result => {
res.json(result);
})
... ... @@ -67,7 +67,7 @@ const getUserInfoAPI = (req, res, next) => {
const sendCodePage = (req, res, next) => {
let inputInfo = req.inputInfo;
service.sendCodeToUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area)
BackService.sendCodeToUserAsync(inputInfo.type, inputInfo.phone, inputInfo.area)
.then(result => {
if (!(result.code && result.code === 200)) {
return res.redirect(helpers.urlFormat('/passport/back/index'));
... ... @@ -100,7 +100,7 @@ const sendBackMobileAPI = (req, res, next) => {
let mobile = req.body.mobile || '';
let area = req.body.area || '86';
service.sendCodeToMobileAsync(area, mobile)
BackService.sendCodeToMobileAsync(area, mobile)
.then(result => {
res.json(result);
})
... ... @@ -111,7 +111,7 @@ const validateMobileAPI = (req, res, next) => {
let mobile = req.body.mobile || '';
const ERR = {code: 400, message: '验证失败'};
if (!passportHelper.validator.verifyMobile(mobile)) {
if (!PassportHelper.validator.verifyMobile(mobile)) {
return res.json(ERR);
}
... ... @@ -154,7 +154,7 @@ const validateCodeByEmailPage = (req, res, next) => {
return next();
}
service.checkEmailCodeAsync(code)
BackService.checkEmailCodeAsync(code)
.then(result => {
if (!result) {
return res.redirect(helpers.urlFormat('/passport/back/index'));
... ... @@ -232,7 +232,7 @@ const verifyCodeByMobileAPI = (req, res) => {
return res.json(ERR);
}
service.verifyCodyByMobileAsync(area, mobile, mobileCode)
BackService.verifyCodyByMobileAsync(area, mobile, mobileCode)
.then(result => {
res.json(result);
})
... ... @@ -271,7 +271,7 @@ const validateCodeByMobilePage = (req, res, next) => {
};
code = new Buffer(code, 'base64').toString();
req.mobileAuth = service.authRequest(data, code);
req.mobileAuth = BackService.authRequest(data, code);
next();
};
... ... @@ -279,7 +279,7 @@ const validateCodeByMobilePage = (req, res, next) => {
const validatePwdPage = (req, res, next) => {
let pwd = req.body.pwd || '';
if (!passportHelper.validator.isPassword(pwd)) {
if (!PassportHelper.validator.verifyPassword(pwd)) {
return res.redirect(helpers.urlFormat('/passport/back/index'));
}
... ... @@ -291,7 +291,7 @@ const updatePwdAPI = (req, res, next) => {
let mobileAuth = req.mobileAuth || {};
let newPassword = req.body.pwd || '';
service.updatePwdAsync(code, mobileAuth, newPassword)
BackService.updatePwdAsync(code, mobileAuth, newPassword)
.then(result => {
if (result.status) {
req.session.successType = result.type;
... ...
... ... @@ -9,6 +9,7 @@
const _ = require('lodash');
const helpers = global.yoho.helpers;
const PassportHelper = require('../models/passport-helper');
const UserService = require('../models/user-service');
const BindService = require('../models/bind-service');
const LoginService = require('../models/login-service');
... ... @@ -191,17 +192,17 @@ const bindCheck = (req, res, next) => {
// 绑定流程:code=200 未注册,可绑定
return {code: 200, message: result.message, data: {next: nextUrl}};
} else if (result.code === 200 && result.data.is_register === 1) {
return PassportHelper.getUserInfo(area, mobile).then(user => {
return UserService.getUserInfoAsync(area, mobile).then(user => {
// 绑定流程:code=201 已注册 绑定过其他第三方
return {code: 201, message: result.message, data: {user: user}};
});
} else if (result.code === 200 && result.data.is_register === 3) {
// 关联流程
return PassportHelper.getUserInfo(area, mobile).then(user => {
return UserService.getUserInfoAsync(area, mobile).then(user => {
return {code: 203, message: result.message, data: {user: user}};
});
} else if (result.code === 506 || result.code === 505) {
return PassportHelper.getUserInfo(area, mobile).then(user => {
return UserService.getUserInfoAsync(area, mobile).then(user => {
// 绑定流程:code=201 已注册 绑定过其他第三方
return {code: 205, message: result.message, data: {user: user}};
});
... ...
... ... @@ -146,7 +146,7 @@ const local = {
let refer = req.cookies.refer;
if (isRemember) {
yield LoginService.rememberAccount({
yield LoginService.rememberAccountAsync({
area: req.body.areaCode || '86',
account: req.body.account,
password: req.body.password
... ...
... ... @@ -11,9 +11,9 @@ const moment = require('moment');
const helpers = global.yoho.helpers;
const api = require('./back-api');
const userService = require('./user-service');
const passportHelper = require('./passport-helper');
const backHelper = require('./back-helper');
const UserService = require('./user-service');
const PassportHelper = require('./passport-helper');
const BackHelper = require('./back-helper');
/**
* 验证手机和邮箱输入正确性
... ... @@ -22,13 +22,13 @@ const validateEmailOrMobileAsync = (userInput, areaCode) => {
return new Promise(function(resolve, rejected) {
let result = {type: 'email', area: '', phone: ''};
if (passportHelper.validator.verifyEmail(userInput)) {
if (PassportHelper.validator.verifyEmail(userInput)) {
result.type = 'email';
result.area = '';
result.phone = userInput;
resolve(result);
} else if (passportHelper.validator.verifyMobile(userInput)) {
} else if (PassportHelper.validator.verifyMobile(userInput)) {
result.type = 'mobile';
result.area = areaCode;
result.phone = userInput;
... ... @@ -54,8 +54,8 @@ const findUserAsync = (type, phone, area) => {
};
const findBy = {
email: userService.findByEmailAsync,
mobile: (phone1, area1) => userService.findByMobileAsync(area1, phone1) // 交换参数
email: UserService.findByEmailAsync,
mobile: (phone1, area1) => UserService.findByMobileAsync(area1, phone1) // 交换参数
};
const OK = {code: 200, message: MESSAGE.ok};
... ... @@ -97,7 +97,7 @@ const sendCodeToMobileAsync = (areaCode, mobile) => {
*/
const indexPageDataAsync = () => {
return co(function *() {
let countryList = passportHelper.getCountry();
let countryList = PassportHelper.getCountry();
return {
back: {
... ... @@ -133,7 +133,7 @@ const verifyCodyByMobileAsync = (area, mobile, mobileCode) => {
createdAt: moment().unix()
};
data.code = new Buffer(backHelper.makeToken(data)).toString('base64');
data.code = new Buffer(BackHelper.makeToken(data)).toString('base64');
return {
code: 200,
... ... @@ -148,7 +148,7 @@ const verifyCodyByMobileAsync = (area, mobile, mobileCode) => {
* 手机 token 合法性验证
*/
const authRequest = (data, token) => {
if (!backHelper.validateToken(data, token)) {
if (!BackHelper.validateToken(data, token)) {
return {};
}
... ...
... ... @@ -9,6 +9,9 @@
const api = global.yoho.API;
/**
* 登录检查用户是否登录注册
*/
const bindCheckAsync = (mobile, openId, sourceType, area) => {
let params = {
method: 'app.passport.signCheck',
... ... @@ -21,6 +24,9 @@ const bindCheckAsync = (mobile, openId, sourceType, area) => {
return api.get('', params);
};
/**
* 发送绑定信息短信
*/
const sendBindMsgAsync = (area, mobile) => {
let params = {
method: 'app.passport.smsbind',
... ... @@ -31,6 +37,9 @@ const sendBindMsgAsync = (area, mobile) => {
return api.get('', params);
};
/**
* 验证手机注册码
*/
const checkBindCodeAsync = (area, mobile, code) => {
return api.get('', {
method: 'app.register.validRegCode',
... ... @@ -40,6 +49,9 @@ const checkBindCodeAsync = (area, mobile, code) => {
});
};
/**
* 绑定用户信息接口
*/
const bindMobileAsync = (openId, sourceType, mobile, area, password, nickname) => {
let params = {
method: 'app.passport.bind',
... ... @@ -60,6 +72,9 @@ const bindMobileAsync = (openId, sourceType, mobile, area, password, nickname) =
return api.get('', params);
};
/**
* 关联用户信息
*/
const relateMobileAsync = (openId, sourceType, mobile, area) => {
return api.get('', {
method: 'app.passport.relatedMobile',
... ... @@ -70,6 +85,9 @@ const relateMobileAsync = (openId, sourceType, mobile, area) => {
});
};
/**
* 改变手机号检查
*/
const changeCheckAsync = (mobile, area) => {
return api.get('', {
method: 'app.passport.changeCheck',
... ... @@ -78,6 +96,9 @@ const changeCheckAsync = (mobile, area) => {
});
};
/**
* 改变手机号绑定
*/
const changeMobileAsync = (uid, mobile, area, code) => {
return api.get('', {
method: 'app.passport.changeMobile',
... ...
... ... @@ -6,6 +6,9 @@
const api = global.yoho.API;
/**
* 手机或邮箱登录
*/
const signinAsync = (area, profile, password, shoppingKey) => {
let param = {
method: 'app.passport.signin',
... ... @@ -21,6 +24,9 @@ const signinAsync = (area, profile, password, shoppingKey) => {
return api.post('', param);
};
/**
* 除微信第三方登录
*/
const signinByOtherOpenIDAsync = (nickname, openId, sourceType, shoppingKey) => {
let param = {
nickname: nickname,
... ... @@ -36,6 +42,9 @@ const signinByOtherOpenIDAsync = (nickname, openId, sourceType, shoppingKey) =>
return api.get('', param);
};
/**
* 微信第三方登录
*/
const signinByWechatAsync = (nickname, openId, sourceType, shoppingKey, unionId) => {
let param = {
nickname: nickname,
... ...
... ... @@ -11,7 +11,7 @@ const sign = global.yoho.sign;
const config = global.yoho.config;
const api = require('./login-api');
const userService = require('./user-service');
const UserService = require('./user-service');
const signinByOpenIDAsync = (nickname, openId, sourceType, shoppingKey, unionId) => {
let signinFunc = {
... ... @@ -26,7 +26,7 @@ const signinByOpenIDAsync = (nickname, openId, sourceType, shoppingKey, unionId)
};
const syncUserSession = (uid, req, res) => {
return userService.profile(uid).then((userInfo) => {
return UserService.profileAsync(uid).then((userInfo) => {
let token = sign.makeToken(uid);
let user = userInfo.data;
... ... @@ -55,7 +55,7 @@ const syncUserSession = (uid, req, res) => {
});
};
const rememberAccount = (accountInfo, req, res) => {
const rememberAccountAsync = (accountInfo, req, res) => {
let aWeek = (new Date()).getTime() / 1000 + 504000; // 504000-一周
let rememKey = md5(md5(accountInfo.account + accountInfo.password + accountInfo.area));
... ... @@ -76,5 +76,5 @@ module.exports = {
signinAsync: api.signinAsync,
signinByOpenIDAsync,
syncUserSession,
rememberAccount
rememberAccountAsync
};
... ...
... ... @@ -5,11 +5,6 @@
const _ = require('lodash');
const helpers = global.yoho.helpers;
const UserService = require('./user-service');
const DEFAULT_HEAD_IMG_ICO = 'http://img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
/**
* 国家数据
*/
... ... @@ -106,7 +101,7 @@ const verifyMobile = phone => {
/**
* 密码是否合法
*/
const isPassword = pwd => {
const verifyPassword = pwd => {
if (!pwd) {
return false;
}
... ... @@ -116,32 +111,11 @@ const isPassword = pwd => {
return pwdRegexp.test(_.trim(pwd));
};
/**
* 第三方登录 根据手机号获取用户相关信息
*/
const getUserInfo = (area, mobile) => {
return UserService.findByMobileAsync(area, mobile).then(user => {
let profile = (user.profile_name || mobile).toString();
if ((profile.length === 11 && profile.indexOf('*') < 0) || (profile.indexOf('-') >= 0 &&
profile.indexOf('*') < 0)) {
profile = profile.substring(0, 3) + '****' + profile.substring(7, 11);
}
return {
username: profile,
headImg: user.head_ico ? helpers.image(user.head_ico, 100, 100, 2) : DEFAULT_HEAD_IMG_ICO,
bindLogin: helpers.urlFormat('/signin', { bindMobile: mobile, bindArea: area })
};
});
};
module.exports = {
validator: {
verifyMobile,
verifyEmail,
isPassword
verifyPassword
},
getCountry,
getUserInfo
getCountry
};
... ...
... ... @@ -4,6 +4,9 @@
'use strict';
const api = global.yoho.API;
/**
* 发送注册验证码
*/
let sendCodeToMobileAsync = (area, mobile) => {
let params = {
method: 'app.register.sendRegCodeToMobile',
... ... @@ -14,6 +17,9 @@ let sendCodeToMobileAsync = (area, mobile) => {
return api.post('', params);
};
/**
* 检查注册验证码
*/
let validMobileCodeAsync = (area, mobile, code) => {
let params = {
method: 'app.register.validRegCode',
... ... @@ -25,6 +31,9 @@ let validMobileCodeAsync = (area, mobile, code) => {
return api.post('', params);
};
/**
* 注册帐号
*/
let regMobileAsync = (area, mobile, password, shoppingKey)=> {
let params = {
method: 'app.passport.register',
... ...
... ... @@ -46,7 +46,10 @@ const findByEmailAsync = (email) => {
});
};
const profile = (uid) => {
/**
* 获得个人信息
*/
const profileAsync = (uid) => {
let param = {
uid: uid,
method: 'app.passport.profile'
... ... @@ -58,5 +61,5 @@ const profile = (uid) => {
module.exports = {
findByMobileAsync,
findByEmailAsync,
profile
profileAsync
};
... ...
... ... @@ -4,5 +4,28 @@
'use strict';
const api = require('./user-api');
const helpers = global.yoho.helpers;
module.exports = api;
const DEFAULT_HEAD_IMG_ICO = 'http://img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
/**
* 第三方登录 根据手机号获取用户相关信息
*/
const getUserInfoAsync = (area, mobile) => {
return api.findByMobileAsync(area, mobile).then(user => {
let profile = (user.profile_name || mobile).toString();
if ((profile.length === 11 && profile.indexOf('*') < 0) || (profile.indexOf('-') >= 0 &&
profile.indexOf('*') < 0)) {
profile = profile.substring(0, 3) + '****' + profile.substring(7, 11);
}
return {
username: profile,
headImg: user.head_ico ? helpers.image(user.head_ico, 100, 100, 2) : DEFAULT_HEAD_IMG_ICO,
bindLogin: helpers.urlFormat('/signin', {bindMobile: mobile, bindArea: area})
};
});
};
module.exports = Object.assign(api, {getUserInfoAsync});
... ...