Authored by yyq

fix login

... ... @@ -50,7 +50,7 @@ Vue.use(Bind);
initClient(store);
yoho.auth = async loginUrl => {
let user = await sdk.getUser();
let user = await sdk.getUser(true);
if (user && user.uid) {
return user;
... ...
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 {
... ...