Authored by 郭成尧

step-change

@@ -37,8 +37,6 @@ passport.use(new LocalStrategy({ @@ -37,8 +37,6 @@ passport.use(new LocalStrategy({
37 let clientIp = req.yoho.clientIp || ''; 37 let clientIp = req.yoho.clientIp || '';
38 let isSkip = req.body.isskip; 38 let isSkip = req.body.isskip;
39 39
40 - console.log('loginPost:', req.session.passwordWeakIgnore);  
41 -  
42 if (isNaN(parseInt(area, 0)) || _.isEmpty(username) || _.isEmpty(password)) { 40 if (isNaN(parseInt(area, 0)) || _.isEmpty(username) || _.isEmpty(password)) {
43 logger.info(`【Passport Loginbad params, area:${area} account:${username} password:${password}`); 41 logger.info(`【Passport Loginbad params, area:${area} account:${username} password:${password}`);
44 return done('登录参数错误', null); 42 return done('登录参数错误', null);
@@ -74,7 +72,7 @@ passport.use(new LocalStrategy({ @@ -74,7 +72,7 @@ passport.use(new LocalStrategy({
74 } else if (result.code && result.code === 4189) { 72 } else if (result.code && result.code === 4189) {
75 done({code: 4189}, null); 73 done({code: 4189}, null);
76 } else if (result.code && result.code === 510) { 74 } else if (result.code && result.code === 510) {
77 - done({code: 510, data: result.data}, null); 75 + done(null, Object.assign(result.data, {weakPassword: true}));
78 } else { 76 } else {
79 done('账号或密码不正确', null); 77 done('账号或密码不正确', null);
80 } 78 }
@@ -192,14 +192,6 @@ const local = { @@ -192,14 +192,6 @@ const local = {
192 }; 192 };
193 193
194 return res.json(obj); 194 return res.json(obj);
195 - } else if (err.code === 510) {  
196 - req.session.passwordWeak = err.data;  
197 - return res.json({  
198 - code: 510,  
199 - url: '/passport/password/resetpage',  
200 - pwdTip: _.get(err, 'data.pwdTip', '密码应为6-20位字母、数字的组合'),  
201 - uid: _.get(err, 'data.uid', '')  
202 - });  
203 } else { 195 } else {
204 let obj = { 196 let obj = {
205 code: 400, 197 code: 400,
@@ -231,11 +223,35 @@ const local = { @@ -231,11 +223,35 @@ const local = {
231 res.cookie('_LOGIN_TYPE', 0, { 223 res.cookie('_LOGIN_TYPE', 0, {
232 domain: 'm.yohobuy.com' 224 domain: 'm.yohobuy.com'
233 }); 225 });
  226 +
  227 +
  228 + // 弱密码返回数据
  229 + let passwordWeakReturn;
  230 +
  231 + if (user.weakPassword) {
  232 + req.session.passwordWeak = user;
  233 + passwordWeakReturn = {
  234 + code: 510,
  235 + url: '/passport/password/resetpage',
  236 + pwdTip: _.get(user, 'pwdTip', '密码应为6-20位字母、数字的组合'),
  237 + uid: _.get(user, 'uid', '')
  238 + };
  239 + }
  240 +
  241 + // 不可以跳过,不登录用户
  242 + if (user.weakPassword && user.canSkip !== 'Y') {
  243 + return res.json(passwordWeakReturn);
  244 + }
  245 +
234 AuthHelper.syncUserSession(user.uid, req, res, user.session_key).then(() => { 246 AuthHelper.syncUserSession(user.uid, req, res, user.session_key).then(() => {
235 - res.json({  
236 - code: 200,  
237 - data: user  
238 - }); 247 + if (user.weakPassword) {
  248 + return res.json(passwordWeakReturn);
  249 + } else {
  250 + res.json({
  251 + code: 200,
  252 + data: user
  253 + });
  254 + }
239 }).catch(next); 255 }).catch(next);
240 } 256 }
241 })(req, res, next); 257 })(req, res, next);
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 * @Author: Targaryen 2 * @Author: Targaryen
3 * @Date: 2017-04-13 10:21:07 3 * @Date: 2017-04-13 10:21:07
4 * @Last Modified by: Targaryen 4 * @Last Modified by: Targaryen
5 - * @Last Modified time: 2017-04-14 17:51:10 5 + * @Last Modified time: 2017-04-17 15:52:03
6 */ 6 */
7 7
8 /* ******************** 8 /* ********************
@@ -11,10 +11,25 @@ @@ -11,10 +11,25 @@
11 11
12 'use strict'; 12 'use strict';
13 13
  14 +const config = global.yoho.config;
  15 +const utils = require(global.utils);
14 const reset = require('../models/reset'); 16 const reset = require('../models/reset');
15 17
16 const passwordResetPage = (req, res) => { 18 const passwordResetPage = (req, res) => {
17 let passwordWeakObj = req.session.passwordWeak; 19 let passwordWeakObj = req.session.passwordWeak;
  20 + let refer = req.cookies.refer;
  21 +
  22 + if (refer) {
  23 + refer = decodeURI(req.cookies.refer);
  24 + } else {
  25 + refer = `${config.siteUrl}/home`;
  26 + }
  27 +
  28 + if (/sign|login/.test(refer)) {
  29 + refer = `${config.siteUrl}/home`;
  30 + }
  31 +
  32 + refer = utils.refererLimit(refer);
18 33
19 res.render('reset/password', { 34 res.render('reset/password', {
20 width750: true, 35 width750: true,
@@ -22,7 +37,7 @@ const passwordResetPage = (req, res) => { @@ -22,7 +37,7 @@ const passwordResetPage = (req, res) => {
22 page: 'reset', 37 page: 'reset',
23 pageStyle: 'passport-body', 38 pageStyle: 'passport-body',
24 title: '重置密码', 39 title: '重置密码',
25 - canSkip: passwordWeakObj.canSkip === 'Y' 40 + canSkip: passwordWeakObj.canSkip === 'Y' ? refer : false
26 }); 41 });
27 }; 42 };
28 43
@@ -34,8 +49,9 @@ const passwordResetPage = (req, res) => { @@ -34,8 +49,9 @@ const passwordResetPage = (req, res) => {
34 */ 49 */
35 const passwordReset = (req, res, next) => { 50 const passwordReset = (req, res, next) => {
36 let passwordWeakObj = req.session.passwordWeak; 51 let passwordWeakObj = req.session.passwordWeak;
  52 + let uid = req.user.uid;
37 53
38 - if (!passwordWeakObj.uid || !passwordWeakObj.token) { 54 + if (!uid || !passwordWeakObj.token) {
39 return res.json({ 55 return res.json({
40 code: 400, 56 code: 400,
41 massage: '非法请求' 57 massage: '非法请求'
@@ -45,7 +61,7 @@ const passwordReset = (req, res, next) => { @@ -45,7 +61,7 @@ const passwordReset = (req, res, next) => {
45 req.session.passwordWeak = null; 61 req.session.passwordWeak = null;
46 62
47 reset.resetPassword({ 63 reset.resetPassword({
48 - uid: passwordWeakObj.uid, 64 + uid: uid,
49 oldPwd: req.body.oldPwd, 65 oldPwd: req.body.oldPwd,
50 newPwd: req.body.newPwd, 66 newPwd: req.body.newPwd,
51 token: passwordWeakObj.token 67 token: passwordWeakObj.token
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 </div> 4 </div>
5 {{#if canSkip}} 5 {{#if canSkip}}
6 <div class="ignore" id="ignoreBtn"> 6 <div class="ignore" id="ignoreBtn">
7 - <span>跳过</span> 7 + <a href="{{canSkip}}"><span>跳过</span></a>
8 </div> 8 </div>
9 {{/if}} 9 {{/if}}
10 <div class="tip"> 10 <div class="tip">
@@ -15,10 +15,13 @@ @@ -15,10 +15,13 @@
15 margin-right: 60px; 15 margin-right: 60px;
16 padding: 12px 32px; 16 padding: 12px 32px;
17 border-radius: 32px; 17 border-radius: 32px;
18 - color: #fff;  
19 border: 1px solid #fff; 18 border: 1px solid #fff;
20 } 19 }
21 20
  21 + .ignore a {
  22 + color: #fff;
  23 + }
  24 +
22 .tip { 25 .tip {
23 text-align: center; 26 text-align: center;
24 font-size: 16px; 27 font-size: 16px;