|
|
|
|
|
const _ = require('lodash');
|
|
|
const url = require('url');
|
|
|
const uuid = require('uuid');
|
|
|
const passport = require('passport');
|
|
|
const TaobaoStrategy = require('./passport-taobao');
|
...
|
...
|
@@ -13,6 +14,8 @@ const config = global.yoho.config; |
|
|
const loginPage = '//m.yohobuy.com/signin.html';
|
|
|
const homePage = `${config.siteUrl}/xianyu/channel`;
|
|
|
|
|
|
const URL_BIND_KEY = 'bind_code';
|
|
|
|
|
|
// taobao 登录
|
|
|
passport.use('taobao', new TaobaoStrategy({
|
|
|
clientID: '27930297',
|
...
|
...
|
@@ -23,6 +26,19 @@ passport.use('taobao', new TaobaoStrategy({ |
|
|
done(null, profile);
|
|
|
}));
|
|
|
|
|
|
function handleReferUrl(refer) {
|
|
|
let referParse = url.parse(refer, true);
|
|
|
let query = [];
|
|
|
|
|
|
_.forEach(referParse.query, (val, key) => {
|
|
|
if (key !== URL_BIND_KEY) {
|
|
|
query.push(`${key}=${val}`);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return `${refer.split('?')[0]}${query.length ? '?' : ''}${query.join(',')}`;
|
|
|
}
|
|
|
|
|
|
class passportModel extends global.yoho.BaseModel {
|
|
|
constructor(ctx) {
|
|
|
super(ctx);
|
...
|
...
|
@@ -147,11 +163,15 @@ const login = { |
|
|
}).then(result => {
|
|
|
let redirectUrl = loginPage;
|
|
|
|
|
|
if (req.cookies.third_backurl) {
|
|
|
redirectUrl += '?refer=' + encodeURIComponent(handleReferUrl(req.cookies.third_backurl));
|
|
|
}
|
|
|
|
|
|
if (result.code === 200) {
|
|
|
if (_.get(result, 'data.is_bind') === 'N') {
|
|
|
redirectUrl = req.cookies.third_backurl ? req.cookies.third_backurl : homePage;
|
|
|
redirectUrl += redirectUrl.indexOf('?') > 0 ? '&' : '?';
|
|
|
redirectUrl += 'bind_code=' + encodeURIComponent(aes.dynamicEncryption(`taobao::${user.open_uid}`));
|
|
|
redirectUrl += URL_BIND_KEY + '=' + encodeURIComponent(aes.dynamicEncryption(`taobao::${user.open_uid}`));
|
|
|
} else if (+_.get(result, 'data.uid') > 0) {
|
|
|
return model.syncUserSession({
|
|
|
uid: result.data.uid,
|
...
|
...
|
@@ -159,9 +179,10 @@ const login = { |
|
|
req,
|
|
|
res
|
|
|
}).finally(() => {
|
|
|
let refer = req.cookies.third_backurl ? req.cookies.third_backurl : homePage;
|
|
|
|
|
|
return res.redirect(refer);
|
|
|
res.cookie('third_backurl', '', {
|
|
|
domain: 'yohobuy.com'
|
|
|
});
|
|
|
return res.redirect(handleReferUrl(req.cookies.third_backurl ? req.cookies.third_backurl : homePage));
|
|
|
});
|
|
|
}
|
|
|
} else {
|
...
|
...
|
|