Authored by htoooth

merge feature/back

... ... @@ -5,219 +5,207 @@
'use strict';
const _ = require('lodash');
const _ = require('lodash');
const library = '../../../library';
const helpers = require(`${library}/helpers`);
const service = require('../models/back-service');
const SIGN_IN_URL = helpers.urlFormat('/signin.html');
const SIGN_IN = helpers.urlFormat('/passport/login');
/**
* 通过邮箱找回密码页面
*/
module.exports.indexByEmailPage = (req, res) => {
let data = {
backUrl: SIGN_IN_URL,
headerText: '找回密码',
isPassportPage: true,
backEmail: true
};
const indexEmailPage = (req, res) => {
res.render('back/email', Object.assign({
module: 'passport',
page: 'back-email',
title: '找回密码-通过邮箱'
}, data));
page : 'back-email',
title : '找回密码-通过邮箱'
}, {
backUrl : SIGN_IN,
headerText : '找回密码',
isPassportPage: true,
backEmail : true
}));
};
/**
* 发送验证码到邮箱
*/
module.exports.sendCodeToEmailAPI = (req, res) => {
const sendCodeToEmailAPI = (req, res) => {
let email = req.body.email || '';
let error = {
code: 400,
const ERR = {
code : 400,
message: '邮箱格式不正确,请重新输入',
data: ''
data : ''
};
if (!helpers.verifyEmail(email)) {
res.json(error);
res.json(ERR);
return;
}
service.sendCodeToEmailAsync(email).then(result => {
if (result.code === 200) {
result.data = helpers.urlFormat('/passport/back/success.html', {email: email});
}
service.sendCodeToEmailAsync(email)
.then(result => {
if (result.code === 200) {
result.data = helpers.urlFormat('/passport/back/success', {email: email});
}
res.json(result);
}).catch(() => {
res.json(error);
});
res.json(result);
})
.catch(() => {
res.json(ERR);
});
};
/**
* 重新发送验证码到邮箱
*/
module.exports.resendCodeToEmailAPI = (req, res) => {
const resendCodeToEmailAPI = (req, res) => {
let email = req.query.email || '';
service.sendCodeToEmailAsync(email).then(result => {
if (_.isEmpty(result)) {
return Promise.rejected('重新发邮件失败');
}
service.sendCodeToEmailAsync(email)
.then(result => {
if (_.isEmpty(result)) {
return Promise.rejected('重新发邮件失败');
}
res.json(result);
}).catch(err => {
res.json({
code: 400,
message: err
res.json(result);
})
.catch(err => {
res.json({
code : 400,
message: err
});
});
});
};
/**
* 邮箱找回密码-返回成功页面
*/
module.exports.backSuccessByEmailPage = (req, res) => {
const backSuccessByEmailPage = (req, res) => {
let email = req.query.email || '';
if (!helpers.verifyEmail(email)) {
res.redirect(400);
}
let domain = email.split('@')[1];
let domain = email.split('@')[1];
let emailUrl = `http://${domain === 'gmail.com' ? 'mail.google.com' : 'mail.'}${domain}`;
res.render('back/email-success', Object.assign({
module: 'passport',
page: 'back-email-success',
title: '找回密码-通过邮箱'
page : 'back-email-success',
title : '找回密码-通过邮箱'
}, {
backUrl: helpers.urlFormat('/passport/back/email.html'),
headerText: '找回密码',
isPassportPage: true,
backUrl : helpers.urlFormat('/passport/back/email'),
headerText : '找回密码',
isPassportPage : true,
backEmailSuccess: true,
goEmail: emailUrl,
resendUrl: helpers.urlFormat('/passport/back/resendemail', {email: email})
goEmail : emailUrl,
resendUrl : helpers.urlFormat('/passport/back/resendemail', {email: email})
}));
};
/**
* 根据邮箱修改密码
*/
module.exports.setNewPasswordByEmailAPI = (req, res) => {
let pwd = req.body.password || '';
const setNewPasswordByEmailAPI = (req, res) => {
let pwd = req.body.password || '';
let code = req.body.code || '';
let data = {
code: 200,
data: SIGN_IN_URL
data: SIGN_IN
};
service.modifyPasswordByEmailAsync(pwd, code).then(result => {
if (result.includes('history.back')) {
data.code = 400;
data.message = '修改失败';
}
service.modifyPasswordByEmailAsync(pwd, code)
.then(result => {
if (result.includes('history.back')) {
data.code = 400;
data.message = '修改失败';
}
res.json(data);
}).catch(() => {
res.json(data);
});
res.json(data);
})
.catch(() => {
res.json(data);
});
};
/**
* 找回密码页面-通过手机号
*/
module.exports.indexByMobilePage = (req, res, next) => {
const indexMobilePage = (req, res, next) => {
service.getAreaDataAsync()
.then(result => {
res.render('back/mobile', Object.assign({
module: 'passport',
page: 'back-mobile',
title: '找回密码-通过手机号'
page : 'back-mobile',
title : '找回密码-通过手机号'
}, {
backUrl: SIGN_IN_URL,
headerText: '找回密码',
backUrl : SIGN_IN,
headerText : '找回密码',
isPassportPage: true,
backMobile: true,
countrys: result.data,
areaCode: '+86'
backMobile : true,
countrys : result.data,
areaCode : '+86'
}));
}).catch(next);
})
.catch(next);
};
/**
* 发送手机验证码
*/
module.exports.sendCodeToMobileAPI = (req, res) => {
let result = {
code: 400,
message: '密码只能使用数字、字母和半角标点符号,请重新输入',
data: ''
};
const sendCodeToMobileAPI = (req, res, next) => {
let phoneNum = req.body.phoneNum || '';
let areaCode = req.body.areaCode || '86';
let ERR = {
code : 400,
message: '输入手机号码出错'
};
if (!helpers.verifyMobile(phoneNum)) {
res.json(result);
return;
return res.json(ERR);
}
service.sendCodeToMobileAsync(phoneNum, areaCode).then(data=> {
if (_.isEmpty(data)) {
return Promise.rejected('发送验证码出错');
}
if (data.code === 200) {
result.data = helpers.urlFormat('/passport/back/verifycode', {
phoneNum: phoneNum,
areaCode: areaCode
});
res.json(result);
} else {
return Promise.rejected('发送验证码出错');
}
}).catch(err => {
result.message = err;
res.json(result);
});
service.sendCodeToMobileAsync(phoneNum, areaCode)
.then(result => {
if (_.isEmpty(result) || result.code !== 200) {
ERR.message = "发送验证码出错";
res.json(ERR);
}
if (result.code === 200) {
return res.json({
code: 200,
data: helpers.urlFormat('/passport/back/mobilecode', {
phoneNum: phoneNum,
areaCode: areaCode
})
});
}
})
.catch(next);
};
/**
* 校验验证码页面
*/
module.exports.verifyCodeByMobilePage = (req, res) => {
const verifyCodeByMobilePage = (req, res) => {
let phoneNum = req.query.phoneNum || '';
let areaCode = req.query.areaCode || '86';
res.render('back/mobile-code', Object.assign({
module: 'passport',
page: 'back-code',
title: '找回密码-通过手机号'
page : 'back-code',
title : '找回密码-通过手机号'
}, {
backUrl: helpers.urlFormat('/passport/back/mobile.html'),
headerText: '找回密码',
backUrl : helpers.urlFormat('/passport/back/mobile'),
headerText : '找回密码',
isPassportPage: true,
backCode: true,
areaCode: areaCode,
phoneNum: phoneNum
backCode : true,
areaCode : areaCode,
phoneNum : phoneNum
}));
};
... ... @@ -225,78 +213,99 @@ module.exports.verifyCodeByMobilePage = (req, res) => {
/**
* 校验手机验证码
*/
module.exports.verifyCodeByMobileAPI = (req, res) => {
const verifyCodeByMobileAPI = (req, res, next) => {
let phoneNum = req.body.phoneNum || '';
let code = req.body.code || '';
let code = req.body.code || '';
let areaCode = req.body.areaCode || '86';
service.validateMobileCodeAsync(phoneNum, code, areaCode)
.then(result => {
if (result.code === 200) {
result.data = helpers.urlFormat('/passport/back/backcode.html', {
phoneNum: phoneNum,
token: result.data.token,
areaCode: areaCode
});
res.json({
code: 200,
data: helpers.urlFormat('/passport/back/backcode', {
phoneNum: phoneNum,
token : result.data.token,
areaCode: areaCode
})
})
} else {
res.json({
code : 400,
message: '验证码失败'
})
}
res.json(result);
}).catch(() => res.json({code: 400, message: '验证码失败'}));
})
.catch(next);
};
/**
* 找回密码页面,设置新密码页面-手机
*/
module.exports.setNewPasswordByMobilePage = (req, res) => {
const setNewPasswordByMobilePage = (req, res) => {
let phoneNum = req.query.phoneNum || '';
let token = req.query.token || '';
let token = req.query.token || '';
let areaCode = req.query.areaCode || '86';
let code = req.query.code || '';
let code = req.query.code || '';
if (!token || (!helpers.verifyMobile(phoneNum) && !code)) {
if (!(code || (token && helpers.verifyMobile(phoneNum)))) {
res.redirect(400);
return;
}
res.render('back/new-password', Object.assign({
module: 'passport',
page: 'back-new-password',
title: '找回密码-输入新密码'
page : 'back-new-password',
title : '找回密码-输入新密码'
}, {
backUrl: SIGN_IN_URL,
headerText: '找回密码',
backUrl : SIGN_IN,
headerText : '找回密码',
isPassportPage: true,
backNewPwd: true,
phoneNum: phoneNum,
token: token,
areaCode: areaCode,
code: code
backNewPwd : true,
phoneNum : phoneNum,
token : token,
areaCode : areaCode,
code : code
}));
};
/**
* 根据手机验证码修改密码
*/
module.exports.setNewPasswordByMobileAPI = (req, res) => {
const setNewPasswordByMobileAPI = (req, res, next) => {
let phoneNum = req.body.phoneNum || '';
let token = req.body.token || '';
let token = req.body.token || '';
let areaCode = req.body.areaCode || '86';
let newPwd = req.body.password || '';
let newPwd = req.body.password || '';
service.modifyPasswordByMobileAsync(phoneNum, token, newPwd, areaCode)
.then(result => {
console.log(result);
if (result.code === 200) {
result.data = SIGN_IN_URL;
res.json({
code: 200,
data: SIGN_IN
});
} else {
res.json({
code : 400,
message: "修改密码失败"
})
}
})
.catch(next);
};
res.json(result);
}).catch(() => res.json({code: 400, message: '修改密码失败'}));
module.exports = {
indexEmailPage,
sendCodeToEmailAPI,
resendCodeToEmailAPI,
backSuccessByEmailPage,
setNewPasswordByEmailAPI,
indexMobilePage,
sendCodeToMobileAPI,
verifyCodeByMobilePage,
verifyCodeByMobileAPI,
setNewPasswordByMobilePage,
setNewPasswordByMobileAPI
};
... ...
... ... @@ -75,7 +75,7 @@ const bind = {
});
},
bindCheck: (req, res) => {
bindCheck: (req, res, next) => {
let phoneNum = req.body.phoneNum;
let openId = req.body.openId;
let areaCode = req.body.areaCode || '86';
... ... @@ -105,7 +105,7 @@ const bind = {
}
res.json(data);
});
}).catch(next);
} else {
res.json({
code: 400,
... ... @@ -115,7 +115,7 @@ const bind = {
}
},
sendBindMsg: (req, res) => {
sendBindMsg: (req, res, next) => {
let phoneNum = req.body.phoneNum;
let areaCode = req.body.areaCode;
... ... @@ -126,13 +126,13 @@ const bind = {
} else {
res.json({ code: 400, message: '', data: '' });
}
});
}).catch(next);
} else {
res.json({ code: 400, message: '', data: '' });
}
},
checkBindMsg: (req, res) => {
checkBindMsg: (req, res, next) => {
let phoneNum = req.body.phoneNum;
let code = req.body.code;
let areaCode = req.body.areaCode;
... ... @@ -144,13 +144,13 @@ const bind = {
} else {
res.json({ code: 400, message: '', data: '' });
}
});
}).catch(next);
} else {
res.json({ code: 400, message: '', data: '' });
}
},
bindMobile: (req, res) => {
bindMobile: (req, res, next) => {
let phoneNum = req.body.phoneNum;
let openId = req.body.openId;
let areaCode = req.body.areaCode || '86';
... ... @@ -176,13 +176,13 @@ const bind = {
return result;
}).then(result => {
res.json(result);
});
}).catch(next);
} else {
res.json({ code: 400, message: '', data: '' });
}
},
relateMobile: (req, res) => {
relateMobile: (req, res, next) => {
let phoneNum = req.body.phoneNum;
let openId = req.body.openId;
let areaCode = req.body.areaCode || '86';
... ... @@ -206,7 +206,7 @@ const bind = {
return result;
}).then(result => {
res.json(result);
});
}).catch(next);
} else {
res.json({ code: 400, message: '', data: '' });
}
... ... @@ -223,20 +223,20 @@ const bind = {
});
},
changeCheck: (req, res) => {
changeCheck: (req, res, next) => {
let phoneNum = req.body.phoneNum;
let areaCode = req.body.areaCode;
if (_.isNumber(parseInt(phoneNum, 0)) && areaCode) {
BindService.changeCheck(phoneNum, areaCode).then(result => {
res.json(result);
});
}).catch(next);
} else {
res.json({ code: 400, message: '', data: '' });
}
},
changeMobile: (req, res) => {
changeMobile: (req, res, next) => {
let uid = req.user.uid;
let phoneNum = req.body.phoneNum;
let areaCode = req.body.areaCode;
... ... @@ -245,7 +245,7 @@ const bind = {
if (_.isNumber(parseInt(phoneNum, 0)) && uid && areaCode && code) {
BindService.changeMobile(uid, phoneNum, areaCode, code).then(result => {
res.json(result);
});
}).catch(next);
} else {
res.json({ code: 400, message: '', data: '' });
}
... ...
... ... @@ -14,261 +14,267 @@ const cookie = require(global.library + '/cookie');
const RegService = require('../models/reg-service');
const AuthHelper = require('../models/auth-helper');
const reg = {
index: (req, res) => {
let index = (req, res) => {
// 设置注册有效时间30分钟, 防机器刷
req.session._REG_EXPIRE = Date.now() + 1800000;
req.session._REG_EXPIRE = Date.now() + 1800000;
let refer = req.query.refer;
let refer = req.query.refer;
refer && res.cookie('refer', encodeURI(refer), {
domain: 'yohobuy.com'
});
refer && res.cookie('refer', encodeURI(refer), {
domain: 'yohobuy.com'
});
res.render('reg/index', {
title: '注册',
res.render('reg/index', {
title: '注册',
backUrl: 'javascript:history.go(-1)', // eslint-disable-line
headerText: '注册', // 头部信息
isPassportPage: true, // 模板中模块标识
areaCode: '+86', // 默认的区号
countrys: RegService.getAreaData() // 地区信息列表
});
},
verifyMobile: (req, res, next) => {
let data = {
code: 400,
message: '手机号已存在',
data: ''
};
headerText: '注册', // 头部信息
isPassportPage: true, // 模板中模块标识
areaCode: '+86', // 默认的区号
countrys: RegService.getAreaData() // 地区信息列表
});
};
let verifyMobile = (req, res, next) => {
let data = {
code: 400,
message: '手机号已存在',
data: ''
};
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
/* 判断参数是否合法 */
if (!_.isNumber(mobile) || !_.isNumber(area)) {
data.message = '手机号错误';
return res.json(data);
}
if (!_.isNumber(mobile) || !_.isNumber(area)) {
data.message = '手机号错误';
return res.json(data);
}
/* 设置注册有效时间30分钟, 防机器刷 */
let expire = req.session._REG_EXPIRE;
let expire = req.session._REG_EXPIRE;
if (!expire || expire < Date.now()) {
data.message = '非法请求';
return res.json(data);
}
if (!expire || expire < Date.now()) {
data.message = '非法请求';
return res.json(data);
}
/* 向手机发送注册验证码 */
RegService.sendCodeToMobile(area, mobile).then((result) => {
if (!result.code) {
return res.json(data);
}
RegService.sendCodeToMobile(area, mobile).then((result) => {
if (!result.code) {
return res.json(data);
}
/* 返回跳转到验证页面的链接 */
if (result.code === 200) {
let token = sign.makeToken(mobile);
result.data = helpers.urlFormat('/passport/reg/code', {
token: token,
phoneNum: mobile,
areaCode: area
});
}
if (result.code === 200) {
let token = sign.makeToken(mobile);
return res.json(result);
}).catch(next);
},
code: (req, res, next) => {
let token = req.query.token;
let mobile = +req.query.phoneNum;
let area = +(req.query.areaCode || 86);
// 判断是否允许访问, 不允许则跳转到错误页面
if (!_.isString(token) || !_.isNumber(mobile) || !sign.verifyToken(mobile, token)) {
return next({
code: 403,
message: 'error token or mobile'
result.data = helpers.urlFormat('/passport/reg/code', {
token: token,
phoneNum: mobile,
areaCode: area
});
}
res.render('reg/code', {
page: 'code',
title: '注册-验证码',
backUrl: '/?go=1', // eslint-disable-line
headerText: '注册', // 头部信息
isPassportPage: true, // 模板中模块标识
areaCode: area, // 默认的区号
phoneNum: mobile, // 手机号
token: token, // 访问令牌
serviceUrl: 'http://chat8.live800.com/live800/chatClient/chatbox.jsp?companyID=620092&configID=149091&jid=8732423409&info=' // 在线客服
return res.json(result);
}).catch(next);
};
let codeAction = (req, res, next) => {
let token = req.query.token;
let mobile = +req.query.phoneNum;
let area = +(req.query.areaCode || 86);
// 判断是否允许访问, 不允许则跳转到错误页面
if (!_.isString(token) || !_.isNumber(mobile) || !sign.verifyToken(mobile, token)) {
return next({
code: 403,
message: 'error token or mobile'
});
},
sendCode: (req, res, next) => {
let data = {
code: 400,
message: '发送验证码失败',
data: ''
};
}
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
res.render('reg/code', {
page: 'code',
title: '注册-验证码',
backUrl: '/?go=1', // eslint-disable-line
headerText: '注册', // 头部信息
isPassportPage: true, // 模板中模块标识
areaCode: area, // 默认的区号
phoneNum: mobile, // 手机号
token: token, // 访问令牌
serviceUrl: 'http://chat8.live800.com/live800/chatClient/chatbox.jsp?companyID=620092&configID=149091&jid=8732423409&info=' // 在线客服
});
};
let sendCode = (req, res, next) => {
let data = {
code: 400,
message: '发送验证码失败',
data: ''
};
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
/* 判断参数是否合法 */
if (!_.isNumber(mobile) || !_.isNumber(area)) {
data.message = '手机号错误';
return res.json(data);
}
if (!_.isNumber(mobile) || !_.isNumber(area)) {
data.message = '手机号错误';
return res.json(data);
}
/* 设置注册有效时间30分钟, 防机器刷 */
let expire = req.session._REG_EXPIRE;
let expire = req.session._REG_EXPIRE;
if (!expire || expire < Date.now()) {
data.message = '非法请求';
return res.json(data);
}
if (!expire || expire < Date.now()) {
data.message = '非法请求';
return res.json(data);
}
/* 向手机发送注册验证码 */
RegService.sendCodeToMobile(area, mobile).then((result) => {
return result.code ? res.json(result) : res.json(data);
}).catch(next);
},
verifyCode: (req, res, next) => {
let data = {
code: 400,
message: '验证码错误',
data: ''
};
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
let code = +req.body.code;
RegService.sendCodeToMobile(area, mobile).then((result) => {
return result.code ? res.json(result) : res.json(data);
}).catch(next);
};
let verifyCode = (req, res, next) => {
let data = {
code: 400,
message: '验证码错误',
data: ''
};
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
let code = +req.body.code;
/* 判断参数是否合法 */
if (!_.isNumber(mobile) || !_.isNumber(area) || !_.isNumber(code)) {
data.message = '手机号错误';
return res.json(data);
}
if (!_.isNumber(mobile) || !_.isNumber(area) || !_.isNumber(code)) {
data.message = '手机号错误';
return res.json(data);
}
/* 设置注册有效时间30分钟, 防机器刷 */
let expire = req.session._REG_EXPIRE;
let expire = req.session._REG_EXPIRE;
if (!expire || expire < Date.now()) {
data.message = '非法请求';
return res.json(data);
}
if (!expire || expire < Date.now()) {
data.message = '非法请求';
return res.json(data);
}
/* 验证注册的标识码是否有效 */
RegService.validMobileCode(area, mobile, code).then((result) => {
if (!result.code) {
return res.json(data);
}
RegService.validMobileCode(area, mobile, code).then((result) => {
if (!result.code) {
return res.json(data);
}
/* 返回跳转到设置密码的链接 */
if (result.code === 200) {
let token = sign.makeToken(mobile);
result.data = helpers.urlFormat('/passport/reg/password', {
token: token,
phoneNum: mobile,
areaCode: area
});
} else if (result.code === 404) {
result.message = '验证码错误'; // 统一验证提示
}
return res.json(result);
}).catch(next);
},
password: (req, res, next) => {
let token = req.query.token;
let mobile = +req.query.phoneNum;
let area = +(req.query.areaCode || 86);
if (result.code === 200) {
let token = sign.makeToken(mobile);
// 判断是否允许访问, 不允许则跳转到错误页面
if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !sign.verifyToken(mobile, token)) {
return next({
code: 403,
message: 'error token or mobile'
result.data = helpers.urlFormat('/passport/reg/password', {
token: token,
phoneNum: mobile,
areaCode: area
});
} else if (result.code === 404) {
result.message = '验证码错误'; // 统一验证提示
}
res.render('reg/password', {
page: 'password',
title: '注册-设置密码',
backUrl: '/?go=1', // eslint-disable-line
headerText: '注册', // 头部信息
isPassportPage: true, // 模板中模块标识
areaCode: area, // 默认的区号
phoneNum: mobile, // 手机号
token: token // 访问令牌
return res.json(result);
}).catch(next);
};
let passwordAction = (req, res, next) => {
let token = req.query.token;
let mobile = +req.query.phoneNum;
let area = +(req.query.areaCode || 86);
// 判断是否允许访问, 不允许则跳转到错误页面
if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !sign.verifyToken(mobile, token)) {
return next({
code: 403,
message: 'error token or mobile'
});
},
setPassword: (req, res, next) => {
let data = {
code: 400,
message: '密码格式不正确',
data: ''
};
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
let password = req.body.password;
let token = req.body.token;
}
res.render('reg/password', {
page: 'password',
title: '注册-设置密码',
backUrl: '/?go=1', // eslint-disable-line
headerText: '注册', // 头部信息
isPassportPage: true, // 模板中模块标识
areaCode: area, // 默认的区号
phoneNum: mobile, // 手机号
token: token // 访问令牌
});
};
let setPassword = (req, res, next) => {
let data = {
code: 400,
message: '密码格式不正确',
data: ''
};
let mobile = +req.body.phoneNum;
let area = +(req.body.areaCode || 86);
let password = req.body.password;
let token = req.body.token;
/* 判断参数是否合法 */
if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !password) {
data.message = '请求参数不合法';
return res.json(data);
}
if (!_.isString(token) || !_.isNumber(mobile) || !_.isNumber(area) || !password) {
data.message = '请求参数不合法';
return res.json(data);
}
/* 判断是否允许访问 */
if (!sign.verifyToken(mobile, token)) {
data.message = '非法 token';
return res.json(data);
}
if (!sign.verifyToken(mobile, token)) {
data.message = '非法 token';
return res.json(data);
}
/* 判断密码是否符合规则 */
if (!helpers.verifyPassword(password)) {
return res.json(data);
}
if (!helpers.verifyPassword(password)) {
return res.json(data);
}
// 购物车key
let shoppingKey = cookie.getShoppingKey(req);
let shoppingKey = cookie.getShoppingKey(req);
// 验证注册的标识码是否有效
RegService.regMobile(area, mobile, password, shoppingKey).then((result) => {
if (!result.code || result.code !== 200) {
return Promise.reject(result);
}
if (!result.data || !result.data.uid) {
return Promise.reject(result);
}
RegService.regMobile(area, mobile, password, shoppingKey).then((result) => {
if (!result.code || result.code !== 200) {
return Promise.reject(result);
}
if (!result.data || !result.data.uid) {
return Promise.reject(result);
}
return AuthHelper.syncUserSession(result.data.uid, req, res);
}).then(() => {
return AuthHelper.syncUserSession(result.data.uid, req, res);
}).then(() => {
// 返回跳转到来源页面
let refer = req.cookies.refer;
let refer = req.cookies.refer;
if (refer) {
refer = decodeURI(req.cookies.refer);
} else {
refer = '/home';
}
if (refer) {
refer = decodeURI(req.cookies.refer);
} else {
refer = '/home';
}
if (/sign|login/.test(refer)) {
refer = '/home';
}
if (/sign|login/.test(refer)) {
refer = '/home';
}
return res.json({
code: 200,
message: '注册成功',
data: {
session: refer,
href: refer
}
});
}).catch(next);
}
return res.json({
code: 200,
message: '注册成功',
data: {
session: refer,
href: refer
}
});
}).catch(next);
};
module.exports = reg;
module.exports = {
index,
verifyMobile,
code: codeAction,
sendCode,
verifyCode,
password: passwordAction,
setPassword
};
... ...
... ... @@ -59,11 +59,11 @@ class Auth {
domain: 'yohobuy.com'
});
}
req.session._TOKEN = token; // esline-disable-line
req.session._LOGIN_UID = uid; // esline-disable-line
req.session._TOKEN = token;
req.session._LOGIN_UID = uid;
res.cookie('_TOKEN', token, {
domain: 'yohobuy.com'
}); // esline-disable-line
});
});
}
}
... ...
... ... @@ -4,9 +4,8 @@
'use strict';
var API = require('../../../library/api').API;
var API = require('../../../library/api').API;
const library = '../../../library';
const sign = require(`${library}/sign`);
var api = new API();
... ... @@ -15,10 +14,10 @@ const YOHOBUY_URL = 'http://www.yohobuy.com/';
/**
* 获取地区数据
*/
module.exports.getAreaDataAsync = () => {
return api.get('', sign.apiSign({
const getAreaDataAsync = () => {
return api.get('', {
method: 'app.passport.getArea'
})).then(result => {
}).then(result => {
result.data = result.data.map(value => {
value.areaCode = `+${value.area}`;
... ... @@ -41,11 +40,11 @@ module.exports.getAreaDataAsync = () => {
*
* @param string mail 邮箱地址
*/
module.exports.sendCodeToEmailAsync = (email) => {
return api.get('', sign.apiSign({
const sendCodeToEmailAsync = (email) => {
return api.get('', {
method: 'app.register.backpwdByEmail',
email: email
}));
email : email
});
};
/**
... ... @@ -54,13 +53,13 @@ module.exports.sendCodeToEmailAsync = (email) => {
* @param string pwd 新密码
* @param string code 邮箱验证码
*/
module.exports.modifyPasswordByEmailAsync = (pwd, code) => {
const modifyPasswordByEmailAsync = (pwd, code) => {
const options = {
url: `${YOHOBUY_URL}passport/back/update`,
form: {
pwd: pwd,
url : `${YOHOBUY_URL}passport/back/update`,
form : {
pwd : pwd,
're-input': pwd,
code: code
code : code
},
timeout: 3000
};
... ... @@ -74,14 +73,12 @@ module.exports.modifyPasswordByEmailAsync = (pwd, code) => {
* @param string mobile 手机号
* @param integer area 地区码ID
*/
module.exports.sendCodeToMobileAsync = (mobile, area) => {
area = area || 86;
return api.get('', sign.apiSign({
const sendCodeToMobileAsync = (mobile, area) => {
return api.get('', {
mobile: mobile,
area: area,
area : area,
method: 'app.register.sendBackpwdCodeToMobile'
}));
});
};
/**
... ... @@ -91,14 +88,14 @@ module.exports.sendCodeToMobileAsync = (mobile, area) => {
* @param string code 验证码
* @param integer area 地区码ID
*/
module.exports.validateMobileCodeAsync = (mobile, code, area) => {
const validateMobileCodeAsync = (mobile, code, area) => {
area = area || 86;
return api.get('', sign.apiSign({
return api.get('', {
mobile: mobile,
code: code,
area: area,
code : code,
area : area,
method: 'app.register.validBackpwdCode'
}));
});
};
/**
... ... @@ -108,15 +105,22 @@ module.exports.validateMobileCodeAsync = (mobile, code, area) => {
* @param string token 验证手机验证码返回的token
* @param integer area 地区码ID
*/
module.exports.modifyPasswordByMobileAsync = (mobile, token, newpwd, area)=> {
area = area || 86;
return api.get('', sign.apiSign({
const modifyPasswordByMobileAsync = (mobile, token, newpwd, area)=> {
return api.get('', {
mobile: mobile,
token: token,
token : token,
newpwd: newpwd,
area: area,
area : area,
method: 'app.register.changepwdByMobileCode'
}));
});
};
module.exports = {
getAreaDataAsync,
sendCodeToEmailAsync,
modifyPasswordByEmailAsync,
sendCodeToMobileAsync,
validateMobileCodeAsync,
modifyPasswordByMobileAsync
};
... ...
... ... @@ -10,9 +10,8 @@
const API = require(`${global.library}/api`).API;
const api = new API();
class RegService {
static bindCheck(mobile, openId, sourceType, area) {
const RegService = {
bindCheck(mobile, openId, sourceType, area) {
let params = {
method: 'app.passport.signCheck',
area: area,
... ... @@ -22,9 +21,8 @@ class RegService {
};
return api.get('', params);
}
static sendBindMsg(area, mobile) {
},
sendBindMsg(area, mobile) {
let params = {
method: 'app.passport.smsbind',
mobile: mobile,
... ... @@ -32,18 +30,16 @@ class RegService {
};
return api.get('', params);
}
static checkBindCode(area, mobile, code) {
},
checkBindCode(area, mobile, code) {
return api.get('', {
method: 'app.register.validRegCode',
mobile: mobile,
area: area,
code: code
});
}
static bindMobile(openId, sourceType, mobile, area, password, nickname) {
},
bindMobile(openId, sourceType, mobile, area, password, nickname) {
let params = {
method: 'app.passport.bind',
mobile: mobile,
... ... @@ -61,9 +57,8 @@ class RegService {
}
return api.get('', params);
}
static relateMobile(openId, sourceType, mobile, area) {
},
relateMobile(openId, sourceType, mobile, area) {
return api.get('', {
method: 'app.passport.relateMobile',
mobile: mobile,
... ... @@ -71,17 +66,15 @@ class RegService {
source_type: sourceType,
area: area
});
}
static changeCheck(mobile, area) {
},
changeCheck(mobile, area) {
return api.get('', {
method: 'app.passport.changeCheck',
mobile: mobile,
area: area
});
}
static changeMobile(uid, mobile, area, code) {
},
changeMobile(uid, mobile, area, code) {
return api.get('', {
method: 'app.passport.changeMobile',
mobile: mobile,
... ... @@ -90,6 +83,6 @@ class RegService {
area: area
});
}
}
};
module.exports = RegService;
... ...
... ... @@ -16,7 +16,7 @@ const ALIPAY_URL = 'https://mapi.alipay.com/gateway.do';
const defaultOptions = {
service: 'alipay.auth.authorize',
_input_charset: 'utf-8', // esline-disable-line
_input_charset: 'utf-8',
sign_type: 'MD5',
target_service: 'user.auth.quick.login'
};
... ...
... ... @@ -10,9 +10,8 @@
const API = require(`${global.library}/api`).API;
const api = new API();
class RegService {
static getAreaData() {
const RegService = {
getAreaData() {
return [
{
areaCode: '+61',
... ... @@ -63,9 +62,8 @@ class RegService {
selected: false,
name: '中国香港'
}];
}
static sendCodeToMobile(area, mobile) {
},
sendCodeToMobile(area, mobile) {
let params = {
method: 'app.register.sendRegCodeToMobile',
area: area,
... ... @@ -73,9 +71,8 @@ class RegService {
};
return api.post('', params);
}
static validMobileCode(area, mobile, code) {
},
validMobileCode(area, mobile, code) {
let params = {
method: 'app.register.validRegCode',
area: area,
... ... @@ -84,9 +81,8 @@ class RegService {
};
return api.post('', params);
}
static regMobile(area, mobile, password, shoppingKey) {
},
regMobile(area, mobile, password, shoppingKey) {
let params = {
method: 'app.passport.register',
area: area,
... ... @@ -95,11 +91,11 @@ class RegService {
};
if (shoppingKey) {
params.shopping_key = shoppingKey; // esline-disable-line
params.shopping_key = shoppingKey;
}
return api.post('', params);
}
}
};
module.exports = RegService;
... ...
... ... @@ -13,6 +13,7 @@ const back = require(cRoot + '/back');
const bind = require(cRoot + '/bind');
const reg = require(cRoot + '/reg');
const router = express.Router(); // eslint-disable-line
// 登出
... ... @@ -61,44 +62,20 @@ router.get('/reg/password', reg.password);
router.post('/reg/setpassword', reg.setPassword);
/**
* 邮箱
* 密码找回
*/
// 通过邮箱找回密码
router.get('/back/email.html', back.indexByEmailPage);
// 邮箱找回密码-成功
router.get('/back/success.html', back.backSuccessByEmailPage);
// 发送邮箱验证码
router.post('/back/sendemail', back.sendCodeToEmailAPI);
// 重新发送邮箱验证码
router.get('/back/resendemail', back.resendCodeToEmailAPI);
// 据邮箱修改密码
router.post('/back/passwordbyemail', back.setNewPasswordByEmailAPI);
/**
* 手机
*/
// 通过手机找回密码
router.get('/back/mobile.html', back.indexByMobilePage);
// 发送手机验证码
router.get('/back/mobilecode.html', back.verifyCodeByMobilePage);
// 输入新密码
router.get('/back/backcode.html', back.setNewPasswordByMobilePage);
// 发送手机验证码
router.post('/back/sendcode', back.sendCodeToMobileAPI);
// 校验手机验证码
router.post('/back/verifycode', back.verifyCodeByMobileAPI);
// 根据手机验证码修改密码
router.post('/back/passwordbymobile', back.setNewPasswordByMobileAPI);
router.get('/back/email', back.indexEmailPage);// 通过邮箱找回密码页面
router.post('/back/sendemail', back.sendCodeToEmailAPI);// 发送邮箱验证码
router.get('/back/resendemail', back.resendCodeToEmailAPI);// 重新发送邮箱验证码
router.get('/back/success', back.backSuccessByEmailPage);// 邮箱找回密码-发送成功页面
router.get('/back/mobile', back.indexMobilePage);// 输入手机号找回密码页面
router.get('/back/mobilecode', back.verifyCodeByMobilePage);// 输入手机验证码页面
router.post('/back/sendcode', back.sendCodeToMobileAPI);// 发送手机验证码
router.post('/back/verifycode', back.verifyCodeByMobileAPI);// 校验手机验证码
router.get('/back/backcode', back.setNewPasswordByMobilePage);// 设置新密码页面
router.post('/back/passwordbyemail', back.setNewPasswordByEmailAPI);// 依据邮箱验证码修改密码
router.post('/back/passwordbymobile', back.setNewPasswordByMobileAPI);// 依据手机验证码修改密码
module.exports = router;
... ...
... ... @@ -286,6 +286,9 @@ exports.verifyMobile = (phone) => {
return /^1[3|4|5|8|7][0-9]{9}$/.test(phone);
};
/**
* 验证密码规则
*/
exports.verifyPassword = (password) => {
if (!password) {
return false;
... ...
This diff could not be displayed because it is too large.
... ... @@ -49,7 +49,7 @@ $btnOk.on('touchstart', function() {
if (mobileBack) {
$.extend(setting, {
phoneNum: $phoneNum.val(),
areaCode: $('#areaCode').val(),
areaCode: $('#area-code').val(),
token: $('#token').val()
});
... ...
... ... @@ -20,7 +20,7 @@ var tip = require('../../plugin/tip');
var trim = $.trim;
var showErrTip = tip.show;
//登录按钮状态切换
// 登录按钮状态切换
function switchLoginBtnStatus() {
if (pnPass && pwdPass) {
$loginBtn.removeClass('disable');
... ... @@ -29,13 +29,13 @@ function switchLoginBtnStatus() {
}
}
//Android-UC下显示select的direction:rtl无效的临时解决办法
// Android-UC下显示select的direction:rtl无效的临时解决办法
api.selectCssHack($countrySelect);
//显示隐藏密码
// 显示隐藏密码
api.bindEyesEvt();
//清空手机号码
// 清空手机号码
api.bindClearEvt();
$phoneNum.bind('input', function() {
... ... @@ -98,14 +98,14 @@ $loginBtn.on('touchstart', function() {
success: function() {
clearTimeout(time);
//Cookie写入成功后,1s后跳转页面
// Cookie写入成功后,1s后跳转页面
setTimeout(function() {
location.href = res.href;
}, 1000);
}
});
//3秒后强制跳转
// 3秒后强制跳转
time = setTimeout(function() {
location.href = res.href;
}, 3000);
... ... @@ -128,6 +128,6 @@ $loginBtn.on('touchstart', function() {
}
});
//对初始有默认值的情况去初始化登录按钮状态
// 对初始有默认值的情况去初始化登录按钮状态
$phoneNum.trigger('input');
$pwd.trigger('input');
\ No newline at end of file
$pwd.trigger('input');
... ...
... ... @@ -21,7 +21,7 @@ var tip = require('../../plugin/tip');
var trim = $.trim;
var showErrTip = tip.show;
//登录按钮状态切换
// 登录按钮状态切换
function switchLoginBtnStatus() {
if (accPass && pwdPass) {
$loginBtn.removeClass('disable');
... ... @@ -30,22 +30,22 @@ function switchLoginBtnStatus() {
}
}
//显示找回密码面板
// 显示找回密码面板
function showRetrivePanel() {
$mask.show();
$ways.show();
}
//隐藏找回密码面板
// 隐藏找回密码面板
function hideRetrivePanel() {
$mask.hide();
$ways.hide();
}
//密码显示与隐藏
// 密码显示与隐藏
api.bindEyesEvt();
//清空账号输入框
// 清空账号输入框
api.bindClearEvt();
$account.bind('input', function() {
... ... @@ -78,7 +78,7 @@ $loginBtn.on('touchstart', function() {
$loginBtn.text('正在登录...').addClass('disable');
//验证账号(数字或者邮箱)和密码合理性
// 验证账号(数字或者邮箱)和密码合理性
if ((/^[0-9]+$/.test(acc) || api.emailRegx.test(acc)) && api.pwdValidate(pwd)) {
$.ajax({
type: 'POST',
... ... @@ -126,6 +126,6 @@ $('#cancel-retrive').on('touchstart', function(e) {
hideRetrivePanel();
});
//对初始有默认值的情况去初始化登录按钮状态
// 对初始有默认值的情况去初始化登录按钮状态
$account.trigger('input');
$pwd.trigger('input');
... ...