router.js 5.88 KB
/**
 * router of sub app channel
 * @author: Bi Kai<kai.bi@yoho.cn>
 * @date: 2016/05/09
 */

'use strict';

const express = require('express');
const cRoot = './controllers';
const login = require(cRoot + '/login');

const captcha = require(cRoot + '/captcha');
const back = require(cRoot + '/back');
const reg = require(cRoot + '/reg');
const bind = require(cRoot + '/bind');
const cert = require(cRoot + '/cert');
const auth = require(`${global.middleware}/auth`);

const router = express.Router(); // eslint-disable-line

// 兼容老的路由
router.get('/signin.html', login.common.beforeLogin, captcha.required, login.local.loginPage);
router.get('/reg.html', captcha.required, reg.index);
router.get('/logout.html', login.local.logout);

// 本地登录
// 短信验证码
router.post('/passport/login/sms/send', captcha.requiredAPI, login.local.sms.send); // 发短信验证码
router.post('/passport/login/sms/auth', login.local.sms.auth); // 验证短信验证码

// 二维码登录
router.post('/passport/login/qrcode/refresh', login.local.qrcode.refresh);           // 刷新二维码
router.post('/passport/login/qrcode/check', login.local.qrcode.check);       // 验证二维码的状态

router.get('/passport/login', login.common.beforeLogin, captcha.required, login.local.loginPage);
router.post('/passport/login/auth', captcha.passwordRequired, login.local.login);
router.get('/passport/logout', login.local.logout);

// 微信登录
router.get('/passport/autosign/wechat', login.common.beforeLogin, login.wechat.login); // 微信登录, 兼容 PHP 的路径
router.get('/passport/login/wechat/callback', login.wechat.callback);

// sina登录
router.get('/passport/autosign/sina', login.common.beforeLogin, login.sina.login);
router.get('/passport/login/sina/callback', login.sina.callback);

// qq登录
// router.get('/passport/autosign/qq', login.common.beforeLogin, login.qq.login);
// router.get('/passport/login/qq/callback', login.qq.callback);

// alipay登录
router.get('/passport/autosign/alipay', login.common.beforeLogin, login.alipay.login);
router.get('/passport/login/alipay/callback', login.alipay.callback);

// douban登录
// router.get('/passport/autosign/douban', login.common.beforeLogin, login.douban.login);
// router.get('/passport/autosign/doubanback', login.douban.callback);

// renren登录
// router.get('/passport/autosign/renren', login.common.beforeLogin, login.renren.login);
// router.get('/passport/login/renren/callback', login.renren.callback);

// 第三方登录后绑定手机号
router.get('/passport/thirdlogin/index', captcha.required, bind.indexPage);
router.get('/passport/thirdlogin/bindsuccess', bind.bindSuccess);
router.post('/passport/autouserinfo/sendBindMsg', captcha.requiredAPI, bind.sendBindMsg);
router.post('/passport/autouserinfo/bindMobile', bind.bindMobile);

// 未实名认证的老邮箱用户登录绑定手机号
router.get('/passport/cert/index', captcha.required, cert.index);     /** 输入手机号码页面 **/
router.get('/passport/cert/success', cert.success); /** 成功提示页面 **/
router.post('/passport/cert/check', cert.check);
router.post('/passport/cert/sendCertMsg', captcha.requiredAPI, cert.sendCertMsg);
router.post('/passport/cert/certMobile', cert.certMobile);

/**
 * 注册页面路由
 */
router.get('/passport/reg/index', captcha.required, reg.index);

// NOTE: 该接口的存在只是为了兼容前端 ajax 请求
router.post('/passport/reg/checkmobile', reg.fakeCheckMobile);

router.post('/passport/reg/msgcaptcha', reg.checkMobileMiddleware, reg.msgCaptcha);

router.post('/passport/reg/sendBindMsg',
    captcha.requiredAPI,
    reg.checkMobileMiddleware,
    reg.sendBindMsg);

router.post('/passport/reg/mobileregister',
    reg.checkMobileMiddleware,
    reg.checkPassword,
    reg.mobileRegister);

router.get('/passport/reg/success', reg.success);

/**
 * 找回密码首页信息
 */
    // 找回密码首页
router.get('/passport/back/index', captcha.required, back.index);

// 验证输入是否正确
router.post('/passport/back/authcode',
    captcha.requiredAPI,
    back.validateInputAPI,
    back.getUserInfoAPI);

// 提交按钮邮件API
router.post('/passport/back/email',
    captcha.requiredAPI,
    back.validateInputAPI,
    back.sendCodePage,
    back.saveInSession);

// 提交按钮手机AP
router.post('/passport/back/mobile',
    captcha.requiredAPI,
    back.validateInputPage,
    back.sendCodePage,
    back.saveInSession);

/**
 * 邮件找回密码
 */
    // 发送邮件成功页面
router.get('/passport/back/sendEmail',
    back.validateEmailInSession,
    back.sendEmailPage);

/**
 * 短信找回密码
 */
    // 验证手机短信页面
router.get('/passport/back/verification',
    captcha.required,
    back.validateMobileInSession,
    back.verifyCodeByMobilePage);

// 重新发送短信接口
router.post('/passport/back/sendBackMobile', captcha.requiredAPI, back.validateMobileAPI, back.sendBackMobileAPI);

// 验证手机验证码接口
router.post('/passport/back/backMobile', back.verifyCodeByMobileAPI);

/**
 * 重置密码
 */

// 重置密码页面
router.get('/passport/back/backcode',
    back.validateExistCodePage,
    back.validateCodeByMobilePage,
    back.validateCodeByEmailPage,
    back.resetPasswordPage);

// 重置密码接口
router.post('/passport/back/update',
    back.validateExistCodePage,
    back.validateCodeByMobilePage,
    back.validatePwdPage,
    back.updatePwdAPI);

// 重置密码成功页面
router.get('/passport/back/resetSuccess',
    back.validateSuccessStatusPage,
    back.resetPwdSuccessPage);

router.get('/passport/images.png', captcha.generate);
router.post('/passport/captcha/img', captcha.checkAPI); // 机器人验证

// 弱密码
router.get('/passport/back/weak', auth, back.weakPasswordPage);
router.post('/passport/back/modPwdByCodeAPI', auth, back.modPwdByCodeAPI);

// 重置密码成功页面
router.get('/passport/back/weakSuccess',
    back.weakPwdSuccessPage);

module.exports = router;