...
|
...
|
@@ -6,76 +6,74 @@ |
|
|
'use strict';
|
|
|
|
|
|
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 => {
|
|
|
service.sendCodeToEmailAsync(email)
|
|
|
.then(result => {
|
|
|
if (result.code === 200) {
|
|
|
result.data = helpers.urlFormat('/passport/back/success.html', {email: email});
|
|
|
result.data = helpers.urlFormat('/passport/back/success', {email: email});
|
|
|
}
|
|
|
|
|
|
res.json(result);
|
|
|
}).catch(() => {
|
|
|
res.json(error);
|
|
|
})
|
|
|
.catch(() => {
|
|
|
res.json(ERR);
|
|
|
});
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* 重新发送验证码到邮箱
|
|
|
*/
|
|
|
module.exports.resendCodeToEmailAPI = (req, res) => {
|
|
|
const resendCodeToEmailAPI = (req, res) => {
|
|
|
let email = req.query.email || '';
|
|
|
|
|
|
service.sendCodeToEmailAsync(email).then(result => {
|
|
|
service.sendCodeToEmailAsync(email)
|
|
|
.then(result => {
|
|
|
if (_.isEmpty(result)) {
|
|
|
return Promise.rejected('重新发邮件失败');
|
|
|
}
|
|
|
|
|
|
res.json(result);
|
|
|
}).catch(err => {
|
|
|
})
|
|
|
.catch(err => {
|
|
|
res.json({
|
|
|
code: 400,
|
|
|
code : 400,
|
|
|
message: err
|
|
|
});
|
|
|
});
|
...
|
...
|
@@ -84,7 +82,7 @@ module.exports.resendCodeToEmailAPI = (req, res) => { |
|
|
/**
|
|
|
* 邮箱找回密码-返回成功页面
|
|
|
*/
|
|
|
module.exports.backSuccessByEmailPage = (req, res) => {
|
|
|
const backSuccessByEmailPage = (req, res) => {
|
|
|
let email = req.query.email || '';
|
|
|
|
|
|
if (!helpers.verifyEmail(email)) {
|
...
|
...
|
@@ -92,46 +90,43 @@ module.exports.backSuccessByEmailPage = (req, res) => { |
|
|
}
|
|
|
|
|
|
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) => {
|
|
|
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 => {
|
|
|
service.modifyPasswordByEmailAsync(pwd, code)
|
|
|
.then(result => {
|
|
|
if (result.includes('history.back')) {
|
|
|
data.code = 400;
|
|
|
data.message = '修改失败';
|
|
|
}
|
|
|
|
|
|
res.json(data);
|
|
|
}).catch(() => {
|
|
|
})
|
|
|
.catch(() => {
|
|
|
res.json(data);
|
|
|
});
|
|
|
};
|
...
|
...
|
@@ -139,85 +134,78 @@ module.exports.setNewPasswordByEmailAPI = (req, res) => { |
|
|
/**
|
|
|
* 找回密码页面-通过手机号
|
|
|
*/
|
|
|
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('发送验证码出错');
|
|
|
service.sendCodeToMobileAsync(phoneNum, areaCode)
|
|
|
.then(result => {
|
|
|
if (_.isEmpty(result) || result.code !== 200) {
|
|
|
ERR.message = "发送验证码出错";
|
|
|
res.json(ERR);
|
|
|
}
|
|
|
|
|
|
if (data.code === 200) {
|
|
|
result.data = helpers.urlFormat('/passport/back/verifycode', {
|
|
|
if (result.code === 200) {
|
|
|
return res.json({
|
|
|
code: 200,
|
|
|
data: helpers.urlFormat('/passport/back/mobilecode', {
|
|
|
phoneNum: phoneNum,
|
|
|
areaCode: areaCode
|
|
|
})
|
|
|
});
|
|
|
|
|
|
res.json(result);
|
|
|
} else {
|
|
|
return Promise.rejected('发送验证码出错');
|
|
|
}
|
|
|
}).catch(err => {
|
|
|
result.message = err;
|
|
|
res.json(result);
|
|
|
});
|
|
|
|
|
|
})
|
|
|
.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 areaCode = req.body.areaCode || '86';
|
|
|
|
|
|
service.validateMobileCodeAsync(phoneNum, code, areaCode)
|
|
|
.then(result => {
|
|
|
if (result.code === 200) {
|
|
|
result.data = helpers.urlFormat('/passport/back/backcode.html', {
|
|
|
res.json({
|
|
|
code: 200,
|
|
|
data: helpers.urlFormat('/passport/back/backcode', {
|
|
|
phoneNum: phoneNum,
|
|
|
token: result.data.token,
|
|
|
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 areaCode = req.query.areaCode || '86';
|
|
|
|
|
|
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 areaCode = req.body.areaCode || '86';
|
|
|
|
|
|
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
|
|
|
}; |
...
|
...
|
|