...
|
...
|
@@ -11,7 +11,6 @@ const helpers = global.yoho.helpers; |
|
|
const PassportHelper = require('../models/passport-helper');
|
|
|
const BindService = require('../models/bind-service');
|
|
|
const AuthHelper = require('../models/auth-helper');
|
|
|
const UserService = require('../models/user-service');
|
|
|
|
|
|
const Sources = {
|
|
|
qq: 'QQ',
|
...
|
...
|
@@ -27,84 +26,119 @@ const bind = { |
|
|
let openId = req.query.openId;
|
|
|
let sourceType = req.query.sourceType;
|
|
|
|
|
|
res.render('bind', {
|
|
|
thirdLogin: true,
|
|
|
openId: openId,
|
|
|
sourceType: sourceType,
|
|
|
region: PassportHelper.getCountry(),
|
|
|
serviceUrl: helpers.urlFormat('/help', {
|
|
|
category_id: 9
|
|
|
}),
|
|
|
res.render('bind/index', Object.assign({
|
|
|
module: 'passport',
|
|
|
page: 'bind',
|
|
|
title: '联合登录补全信息'
|
|
|
});
|
|
|
}, {
|
|
|
openId: openId,
|
|
|
sourceType: sourceType,
|
|
|
region: PassportHelper.getCountry(),
|
|
|
local: '+86',
|
|
|
imgCaptcha: helpers.urlFormat('/passport/images', {t: Date.now()})
|
|
|
}));
|
|
|
},
|
|
|
noregist: (req, res) => {
|
|
|
bindSetPwdPage: (req, res) => {
|
|
|
let mobile = req.body.mobile;
|
|
|
let sourceType = req.body.sourceType;
|
|
|
let openId = req.body.openId;
|
|
|
let area = req.body.area;
|
|
|
|
|
|
res.render('bind/noregist', {
|
|
|
enablePerfectInformation: true,
|
|
|
res.render('bind/bind-set-pwd', Object.assign({
|
|
|
module: 'passport',
|
|
|
page: 'bind-set-pwd',
|
|
|
title: '登录绑定'
|
|
|
}, {
|
|
|
mobile: mobile,
|
|
|
sourceType: sourceType,
|
|
|
openId: openId,
|
|
|
area: area,
|
|
|
module: 'passport',
|
|
|
page: 'noregist',
|
|
|
title: '登录绑定'
|
|
|
});
|
|
|
area: area
|
|
|
}));
|
|
|
|
|
|
},
|
|
|
relate: (req, res, next) => {
|
|
|
let mobile = req.body.mobile;
|
|
|
let sourceType = req.body.sourceType;
|
|
|
let openId = req.body.openId;
|
|
|
let area = req.body.area;
|
|
|
bindConfirmPage: (req, res) => {
|
|
|
let thirdPart = req.body.thirdPart;
|
|
|
let user = req.body.user;
|
|
|
|
|
|
UserService.findByMobileAsync(area, mobile).then(user => {
|
|
|
if (user) {
|
|
|
return {
|
|
|
thumb: user.headImg,
|
|
|
userName: user.username,
|
|
|
loginHref: user.bindLogin
|
|
|
};
|
|
|
} else {
|
|
|
return {};
|
|
|
}
|
|
|
}).then(user => {
|
|
|
let data = _.assign(user, {
|
|
|
phoneNum: mobile,
|
|
|
areaCode: area,
|
|
|
openId: openId,
|
|
|
sourceType: sourceType,
|
|
|
changeHref: helpers.urlFormat('/passport/thirdlogin/index', {openId: openId, sourceType: sourceType}),
|
|
|
module: 'passport',
|
|
|
page: 'noregist',
|
|
|
title: '账号关联'
|
|
|
});
|
|
|
|
|
|
res.render('bind/relate', data);
|
|
|
}).catch(next);
|
|
|
const DEFAULT_URL = 'http://img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
|
|
|
let avatar = user.headImg || DEFAULT_URL;
|
|
|
|
|
|
res.render('bind/bind-confirm', Object.assign({
|
|
|
module: 'passport',
|
|
|
page: 'bind-confirm',
|
|
|
title: '绑定确认'
|
|
|
}, {
|
|
|
avatar: avatar,
|
|
|
name: user.username || '咸鸭蛋',
|
|
|
bindSuccess: helpers.urlFormat('/thirdlogin/bindSuccess', {
|
|
|
sourceType: thirdPart.sourceType
|
|
|
}),
|
|
|
bindUrl: helpers.urlFormat('/passport/thirdlogin/index', {
|
|
|
openId: thirdPart.openId,
|
|
|
sourceType: thirdPart.sourceType
|
|
|
}),
|
|
|
loginUrl: helpers.urlFormat('/passport/login'),
|
|
|
uid: user.uid,
|
|
|
mobile: thirdPart.mobile,
|
|
|
area: thirdPart.area,
|
|
|
code: thirdPart.code,
|
|
|
sourceType: thirdPart.sourceType
|
|
|
}));
|
|
|
},
|
|
|
bindSuccess: (req, res) => {
|
|
|
|
|
|
bindSuccessPage: (req, res) => {
|
|
|
let sourceType = _.trim(req.query.sourceType);
|
|
|
let sourceInfo = sourceType.split('_');
|
|
|
let sourceName = Sources[sourceInfo[0]];
|
|
|
let isRelate = (sourceInfo[1] === 'relate');
|
|
|
let data = {
|
|
|
thirdLogin: true,
|
|
|
goShopping: helpers.urlFormat('/'),
|
|
|
sourceName: sourceName,
|
|
|
relate: isRelate,
|
|
|
|
|
|
res.render('bind/bind-success', Object.assign({
|
|
|
module: 'passport',
|
|
|
page: 'bind-success',
|
|
|
title: '绑定手机号'
|
|
|
};
|
|
|
}, {
|
|
|
goShopping: helpers.urlFormat('/'),
|
|
|
sourceName: sourceName
|
|
|
}));
|
|
|
},
|
|
|
|
|
|
relateSuccessPage: (req, res) => {
|
|
|
let sourceType = _.trim(req.query.sourceType);
|
|
|
let sourceInfo = sourceType.split('_');
|
|
|
let sourceName = Sources[sourceInfo[0]];
|
|
|
|
|
|
res.render('bind/relate-success', Object.assign({
|
|
|
module: 'passport',
|
|
|
page: 'relate-success',
|
|
|
title: '关联手机号'
|
|
|
}, {
|
|
|
goShopping: helpers.urlFormat('/'),
|
|
|
sourceName: sourceName
|
|
|
}));
|
|
|
},
|
|
|
relateConfirmPage: (req, res) => {
|
|
|
let thirdPart = req.body.thirdPart;
|
|
|
let user = req.body.user;
|
|
|
|
|
|
const DEFAULT_URL = 'http://img10.static.yhbimg.com/headimg/2013/11/28/09/01cae078abe5fe320c88cdf4c220212688.gif?imageView/2/w/100/h/100';
|
|
|
let avatar = user.headImg || DEFAULT_URL;
|
|
|
|
|
|
res.render('bind/success', data);
|
|
|
res.render('bind/relate-confirm', Object.assign({
|
|
|
module: 'passport',
|
|
|
page: 'bind-confirm',
|
|
|
title: '关联确认'
|
|
|
}, {
|
|
|
avatar: avatar,
|
|
|
name: user.username || '咸鸭蛋',
|
|
|
relateUrl: helpers.urlFormat('/passport/thirdlogin/index', {
|
|
|
openId: thirdPart.openId,
|
|
|
sourceType: thirdPart.sourceType
|
|
|
}),
|
|
|
signinUrl: helpers.urlFprmat('/passport/login'),
|
|
|
mobile: thirdPart.mobile,
|
|
|
area: thirdPart.area,
|
|
|
sourceType: thirdPart.sourceType,
|
|
|
openId: thirdPart.openId
|
|
|
}));
|
|
|
},
|
|
|
bindCheck: (req, res, next) => {
|
|
|
let mobile = req.body.mobile;
|
...
|
...
|
@@ -115,35 +149,35 @@ const bind = { |
|
|
if (mobile && openId && area && sourceType) {
|
|
|
BindService.bindCheck(mobile, openId, sourceType, area).then(result => {
|
|
|
if (!result || !result.code) {
|
|
|
return { code: 400, message: '', data: '' };
|
|
|
return {code: 400, message: '', data: ''};
|
|
|
} else if (result.code === 200 && result.data.is_register === 0) {
|
|
|
let nextUrl = helpers.urlFormat('/passport/thirdlogin/noregist');
|
|
|
let nextUrl = helpers.urlFormat('/passport/thirdlogin/bindSetPwd');
|
|
|
|
|
|
// 绑定流程:code=200 未注册,可绑定
|
|
|
return { code: 200, message: result.message, data: { next: nextUrl } };
|
|
|
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 => {
|
|
|
// 绑定流程:code=201 已注册 绑定过其他第三方
|
|
|
return {code: 201, message: result.message, data: { user: user } };
|
|
|
return {code: 201, message: result.message, data: {user: user}};
|
|
|
});
|
|
|
} else if (result.code === 200 && result.data.is_register === 3) {
|
|
|
let nextUrl = helpers.urlFormat('/passport/thirdlogin/relate');
|
|
|
|
|
|
// 关联流程
|
|
|
return { code: 203, message: result.message, data: { next: nextUrl } };
|
|
|
return {code: 203, message: result.message, data: {next: nextUrl}};
|
|
|
} else if (result.code === 506 || result.code === 505) {
|
|
|
return PassportHelper.getUserInfo(area, mobile).then(user => {
|
|
|
// 绑定流程:code=201 已注册 绑定过其他第三方
|
|
|
return { code: 205, message: result.message, data: { user: user } };
|
|
|
return {code: 205, message: result.message, data: {user: user}};
|
|
|
});
|
|
|
} else {
|
|
|
return { code: result.code, message: result.message, data: result.data ? result.data : '' };
|
|
|
return {code: result.code, message: result.message, data: result.data ? result.data : ''};
|
|
|
}
|
|
|
}).then(result => {
|
|
|
res.json(result);
|
|
|
}).catch(next);
|
|
|
} else {
|
|
|
res.json({ code: 400, message: '', data: '' });
|
|
|
res.json({code: 400, message: '', data: ''});
|
|
|
}
|
|
|
},
|
|
|
sendBindMsg: (req, res, next) => {
|
...
|
...
|
@@ -154,7 +188,7 @@ const bind = { |
|
|
if (result && result.code) {
|
|
|
res.json(result);
|
|
|
} else {
|
|
|
res.json({ code: 400, message: '', data: '' });
|
|
|
res.json({code: 400, message: '', data: ''});
|
|
|
}
|
|
|
}).catch(next);
|
|
|
},
|
...
|
...
|
@@ -167,7 +201,7 @@ const bind = { |
|
|
if (result && result.code) {
|
|
|
res.json(result);
|
|
|
} else {
|
|
|
res.json({ code: 400, message: '', data: '' });
|
|
|
res.json({code: 400, message: '', data: ''});
|
|
|
}
|
|
|
}).catch(next);
|
|
|
},
|
...
|
...
|
@@ -176,16 +210,9 @@ const bind = { |
|
|
let area = _.trim(req.body.area) || '86';
|
|
|
let openId = _.trim(req.body.openId);
|
|
|
let sourceType = _.trim(req.body.sourceType);
|
|
|
let code = _.trim(req.body.code);
|
|
|
let password = _.trim(req.body.password) || '';
|
|
|
|
|
|
BindService.checkBindCode(area, mobile, code).then(result => {
|
|
|
if (result && result.code !== 200) {
|
|
|
return { code: 402, message: '短信验证码不正确', data: '' };
|
|
|
} else {
|
|
|
return BindService.bindMobile(openId, sourceType, mobile, area, password);
|
|
|
}
|
|
|
}).then(result => {
|
|
|
BindService.bindMobile(openId, sourceType, mobile, area, password).then(result => {
|
|
|
if (result && result.code) {
|
|
|
if (result.code === 200 && result.data && result.data.uid) {
|
|
|
let refer = helpers.urlFormat('/passport/thirdlogin/bindsuccess', {
|
...
|
...
|
@@ -193,10 +220,10 @@ const bind = { |
|
|
});
|
|
|
|
|
|
return AuthHelper.syncUserSession(result.data.uid, req, res).then(() => {
|
|
|
return { code: 200, message: result.message, data: {refer: refer }};
|
|
|
return {code: 200, message: result.message, data: {refer: refer}};
|
|
|
});
|
|
|
} else {
|
|
|
return { code: result.code, message: result.message, data: { refer: ''} };
|
|
|
return {code: result.code, message: result.message, data: {refer: ''}};
|
|
|
}
|
|
|
} else {
|
|
|
return {code: 400, message: '', data: ''};
|
...
|
...
|
@@ -210,37 +237,26 @@ const bind = { |
|
|
let openId = req.body.openId;
|
|
|
let areaCode = req.body.areaCode || '86';
|
|
|
let sourceType = req.body.sourceType;
|
|
|
let code = req.body.code;
|
|
|
|
|
|
if (_.isNumber(parseInt(mobile, 0)) && openId && areaCode && sourceType && code) {
|
|
|
BindService.checkBindCode(areaCode, mobile, code).then(result => {
|
|
|
if (result && result.code && result.code === 200) {
|
|
|
return BindService.relateMobile(openId, sourceType, mobile, code);
|
|
|
} else {
|
|
|
return { code: 402, message: '短信验证码错误', data: '' };
|
|
|
}
|
|
|
}).then(result => {
|
|
|
if (result && result.code) {
|
|
|
if (result.code === 200 && result.data && result.data.uid) {
|
|
|
let refer = helpers.urlFormat('/passport/thirdlogin/bindsuccess', {
|
|
|
sourceType: sourceType + '_bind'
|
|
|
});
|
|
|
|
|
|
return AuthHelper.syncUserSession(result.data.uid, req, res).then(() => {
|
|
|
return { code: 200, message: result.message, data: {refer: refer }};
|
|
|
});
|
|
|
} else {
|
|
|
return { code: result.code, message: result.message, data: { refer: ''} };
|
|
|
}
|
|
|
return BindService.relateMobile(openId, sourceType, mobile, areaCode).then(result => {
|
|
|
if (result && result.code) {
|
|
|
if (result.code === 200 && result.data && result.data.uid) {
|
|
|
let refer = helpers.urlFormat('/passport/thirdlogin/relatesuccess', {
|
|
|
sourceType: sourceType + '_bind'
|
|
|
});
|
|
|
|
|
|
return AuthHelper.syncUserSession(result.data.uid, req, res).then(() => {
|
|
|
return {code: 200, message: result.message, data: {refer: refer}};
|
|
|
});
|
|
|
} else {
|
|
|
return {code: 400, message: '', data: ''};
|
|
|
return {code: result.code, message: result.message, data: {refer: ''}};
|
|
|
}
|
|
|
}).then(result => {
|
|
|
res.json(result);
|
|
|
}).catch(next);
|
|
|
} else {
|
|
|
res.json({ code: 400, message: '', data: '' });
|
|
|
}
|
|
|
} else {
|
|
|
return {code: 400, message: '', data: ''};
|
|
|
}
|
|
|
}).then(result => {
|
|
|
res.json(result);
|
|
|
}).catch(next);
|
|
|
}
|
|
|
};
|
|
|
|
...
|
...
|
|