Authored by 王水玲

Merge branch 'feature/safe-bug' of git.yoho.cn:fe/yoho-blk into feature/safe-bug

... ... @@ -2,12 +2,12 @@
# Created by https://www.gitignore.io/api/node,webstorm,netbeans,sublimetext,vim
### Node ###
# Logs
!logs/README.md
# Logs
!logs/README.md
logs
*.log
npm-debug.log*
npm-debug.log*
# Runtime data
pids
*.pid
... ... @@ -141,3 +141,4 @@ public/bundle/*
.eslintcache
*.log.*
.vscode/
connection-parse/
\ No newline at end of file
... ...
... ... @@ -391,27 +391,36 @@ const validate2 = (req, res, next) => {
}
} else if (type === 'mobile') {
let a = yield accountModel.checkVerifyMsg(body.code, body.mobile, body.area);
let b = yield accountModel.modifyVerifyMobile(uid, body.area, body.mobile);
if (a.code === 200 && b.code === 200) {
cookieHelper.setVal(res, body.type + '_STEP', 2);
res.send({
code: 200,
data: {}
});
} else {
let msg = [];
if (a.code !== 200) {
msg.push('<p>图片验证:' + a.message + '</p>');
}
if (b.code !== 200) {
msg.push('<p>修改号码:' + a.message + '</p>');
let b = yield accountModel.checkVerifyMobile(uid, body.mobile, body.area);
if (b.code === 200) {
let a = yield accountModel.checkVerifyMsg(body.code, body.mobile, body.area);
if (a.code === 200) {
let c = yield accountModel.modifyVerifyMobile(uid, body.area, body.mobile);
cookieHelper.setVal(res, body.type + '_STEP', 2);
if (c.code === 200) {
res.send({
code: 200,
data: {}
});
} else {
res.send({
code: 500,
message: c.message
});
}
} else {
res.send({
code: 500,
message: '<p>短信验证:' + a.message + '</p>'
});
}
} else {
res.send({
code: 500,
message: msg.join('')
message: '<p>修改号码:' + b.message + '</p>'
});
}
}
... ...
... ... @@ -20,7 +20,8 @@ const router = express.Router(); // eslint-disable-line
// 本地登录
router.get('/login', login.common.beforeLogin, login.local.loginPage);
router.post('/login/auth', login.local.login);
router.post('/login/user', back.validateInputAPI, back.getUserInfoAPI);
// router.post('/login/user', back.validateInputAPI, back.getUserInfoAPI);
router.get('/logout', login.local.logout);
// 手机短信验证码
... ...
... ... @@ -34,7 +34,7 @@ const safeRedirect = (uri) => {
}
return _.some(domains, matchFunc) ? uri : '/';
return _.some(domains, matchFunc) ? uri.replace(/\@.*$/, '') : '/';
};
/**
... ...
... ... @@ -5,7 +5,8 @@
*/
var dialog = require('../../plugins/dialog');
var _alert = dialog.Alert;
var regValidate = require('../../passport/common/mail-phone-regx');
// var regValidate = require('../../passport/common/mail-phone-regx');
var types = location.pathname.split('/');
var type = types[types.length - 1]; // 界面操作类型
var $imgCaptchaInput = $('#captcha');
... ... @@ -28,21 +29,21 @@ var disableSMSBtn = function() {
};
// 校验手机号码格式
var validatePhoneNumLocal = function(phoneNum) {
var length = phoneNum.length;
phoneNum = parseInt(phoneNum, 10);
if (length === 0) {
new _alert('请输入手机号码!').show();
return false;
} else if (length !== 11 || !/^[0-9]+$/.test(phoneNum) || !regValidate.phoneRegx['+86'].test(phoneNum)) {
new _alert('手机号码格式不正确,请重新输入!').show();
return false;
} else {
return true;
}
};
// var validatePhoneNumLocal = function(phoneNum) {
// var length = phoneNum.length;
// phoneNum = parseInt(phoneNum, 10);
// if (length === 0) {
// new _alert('请输入手机号码!').show();
// return false;
// } else if (length !== 11 || !/^[0-9]+$/.test(phoneNum) || !regValidate.phoneRegx['+86'].test(phoneNum)) {
// new _alert('手机号码格式不正确,请重新输入!').show();
// return false;
// } else {
// return true;
// }
// };
require('yoho-jquery-placeholder');
... ... @@ -57,42 +58,42 @@ $('#region').on('change', function() {
});
// 校验手机号码
$('#real-mobile').blur(function() {
var mobile = $(this).val();
var self = $('#real-mobile').parent();
if (validatePhoneNumLocal(mobile)) {
$.ajax({
type: 'POST',
url: '/me/account/checkVerifyMobile',
dataType: 'json',
data: {
mobile: mobile,
area: area
},
success: function(data) {
if (data.code === 200) {
$sms.removeClass('disable');
self.find('.tips-success').addClass('ok').show();
self.find('.tips-error').removeClass('notok').hide();
} else {
new _alert(data.message).show();
self.find('.tips-success').removeClass('ok').hide();
self.find('.tips-error').addClass('notok').show();
}
}
});
}
});
// $('#real-mobile').blur(function() {
// var mobile = $(this).val();
// var self = $('#real-mobile').parent();
// if (validatePhoneNumLocal(mobile)) {
// $.ajax({
// type: 'POST',
// url: '/me/account/checkVerifyMobile',
// dataType: 'json',
// data: {
// mobile: mobile,
// area: area
// },
// success: function(data) {
// if (data.code === 200) {
// $sms.removeClass('disable');
// self.find('.tips-success').addClass('ok').show();
// self.find('.tips-error').removeClass('notok').hide();
// } else {
// new _alert(data.message).show();
// self.find('.tips-success').removeClass('ok').hide();
// self.find('.tips-error').addClass('notok').show();
// }
// }
// });
// }
// });
// 发送手机验证码
$sms.click(function() {
var mobile = $('#real-mobile').val();
if ($(this).hasClass('disable')) {
return;
}
// if ($(this).hasClass('disable')) {
// return;
// }
$sms.addClass('disable');
$.ajax({
type: 'POST',
... ...
... ... @@ -25,7 +25,7 @@ var $phoneNumInput = $('#account'),
var $loginTip = $loginBtn.siblings('.login-fail-tip'),
ep = new EventProxy();
var mailPhoneRegx = require('../common/mail-phone-regx');
// var mailPhoneRegx = require('../common/mail-phone-regx');
var mailAc = require('../common/ac-email'); // 邮箱自动完成
var $remember = $('.remember-me');
var captchaUrl = '/passport/images?t='; // /passport/images?t=1454464125
... ... @@ -53,7 +53,8 @@ var secondCount = 60;
// 短信验证码只能验证一次
var isSmsCheckedSuccessFlag = false;
var currLoginType = 'PasswordLogin';
var userIsRight = false;
// var userIsRight = false;
var smsIsRight = false;
require('yoho-jquery-placeholder');
... ... @@ -86,94 +87,94 @@ function getMoblie() {
}
// 验证账户名
function validateAccountLocal() {
var phoneNum = getMoblie(),
regionCode = $regionCodeText.text();
if (phoneNum !== '') {
if (/^[0-9]+$/.test(phoneNum)) {
// 这里只做中国区验证
if (regionCode === '+86') {
if (phoneNum.length === 11 && mailPhoneRegx.phoneRegx['+86'].test(phoneNum)) {
return true;
} else {
errTip($phoneNumInput, '手机号码不正确,请重新输入');
return false;
}
}
return true;
} else {
// 邮箱验证
if (mailPhoneRegx.emailRegx.test(phoneNum)) {
return true;
} else {
errTip($phoneNumInput, '邮箱格式不正确,请重新输入');
return false;
}
}
} else {
errTip($phoneNumInput, '请输入账号');
return false;
}
}
// function validateAccountLocal() {
// var phoneNum = getMoblie(),
// regionCode = $regionCodeText.text();
// if (phoneNum !== '') {
// if (/^[0-9]+$/.test(phoneNum)) {
// // 这里只做中国区验证
// if (regionCode === '+86') {
// if (phoneNum.length === 11 && mailPhoneRegx.phoneRegx['+86'].test(phoneNum)) {
// return true;
// } else {
// errTip($phoneNumInput, '手机号码不正确,请重新输入');
// return false;
// }
// }
// return true;
// } else {
// // 邮箱验证
// if (mailPhoneRegx.emailRegx.test(phoneNum)) {
// return true;
// } else {
// errTip($phoneNumInput, '邮箱格式不正确,请重新输入');
// return false;
// }
// }
// } else {
// errTip($phoneNumInput, '请输入账号');
// return false;
// }
// }
// 异步验证帐号是否存在
function validateAccountAsync(url) {
return $.ajax({
type: 'POST',
url: url,
data: {
phoneNum: getMoblie(),
area: getArea()
}
}).then(function(data) {
if (data.code && data.code === 200) {
return true;
} else {
errTip($phoneNumInput, data.message);
return false;
}
});
}
// function validateAccountAsync(url) {
// return $.ajax({
// type: 'POST',
// url: url,
// data: {
// phoneNum: getMoblie(),
// area: getArea()
// }
// }).then(function(data) {
// if (data.code && data.code === 200) {
// return true;
// } else {
// errTip($phoneNumInput, data.message);
// return false;
// }
// });
// }
// 整合本地和异步验证信息
function validateAccount() {
if (userIsRight) {
// if (userIsRight) {
return $.Deferred().resolve(true).promise(); // eslint-disable-line
}
return (function() {
var defer = $.Deferred(); // eslint-disable-line
var url = '/passport/login/user';
if (currLoginType === 'SMSLogin') {
url = '/passport/login/sms/checkuser';
}
if (validateAccountLocal()) {
validateAccountAsync(url).then(function(result) {
if (result) {
defer.resolve(result);
} else {
defer.reject(result);
}
});
} else {
defer.reject(false);
}
return defer.promise();
}()).then(function() {
hideTip($phoneNumInput);
ep.emit('phone', true);
userIsRight = true;
}).fail(function() {
ep.emit('phone', false);
});
// }
// return (function() {
// var defer = $.Deferred(); // eslint-disable-line
// var url = '/passport/login/user';
// if (currLoginType === 'SMSLogin') {
// url = '/passport/login/sms/checkuser';
// }
// if (validateAccountLocal()) {
// validateAccountAsync(url).then(function(result) {
// if (result) {
// defer.resolve(result);
// } else {
// defer.reject(result);
// }
// });
// } else {
// defer.reject(false);
// }
// return defer.promise();
// }()).then(function() {
// hideTip($phoneNumInput);
// ep.emit('phone', true);
// userIsRight = true;
// }).fail(function() {
// ep.emit('phone', false);
// });
}
// 验证密码
... ... @@ -282,65 +283,65 @@ function showAccountErrTimes() {
}
// 登录次数限制接口
function throttle() {
return $.ajax({
url: '/passport/login/account',
type: 'GET',
data: {
account: getMoblie()
}
});
}
// function throttle() {
// return $.ajax({
// url: '/passport/login/account',
// type: 'GET',
// data: {
// account: getMoblie()
// }
// });
// }
// 验证帐号系统
function validate() {
if (userIsRight) {
return true;
}
return validateAccount().then(function(result) {
if (result) {
return throttle();
} else {
return false;
}
}).then(function(res) {
var defer = $.Deferred(); // eslint-disable-line
if (!res) {
defer.reject(false);
}
if (res.data && res.data.needCaptcha) {
showAccountErrTimes();
defer.reject(false);
}
defer.resolve(true);
return defer.promise();
});
}
// function validate() {
// if (userIsRight) {
// return true;
// }
// return validateAccount().then(function(result) {
// if (result) {
// return throttle();
// } else {
// return false;
// }
// }).then(function(res) {
// var defer = $.Deferred(); // eslint-disable-line
// if (!res) {
// defer.reject(false);
// }
// if (res.data && res.data.needCaptcha) {
// showAccountErrTimes();
// defer.reject(false);
// }
// defer.resolve(true);
// return defer.promise();
// });
// }
// 邮箱自动补全
mailAc($phoneNumInput, function() {
});
// 手机号码输入框失去焦点事件
function phoneBlur() {
$phone.removeClass('focus');
validate();
}
$phoneNumInput.on('focus', function() {
hideTip($phoneNumInput);
$phone.addClass('focus');
$(this).off('blur').on('blur', phoneBlur);
});
$phoneNumInput.on('input', function() {
userIsRight = false;
});
// function phoneBlur() {
// $phone.removeClass('focus');
// validate();
// }
// $phoneNumInput.on('focus', function() {
// hideTip($phoneNumInput);
// $phone.addClass('focus');
// $(this).off('blur').on('blur', phoneBlur);
// });
// $phoneNumInput.on('input', function() {
// userIsRight = false;
// });
$('[placeholder]').placeholder();
... ...