account.js 8.76 KB
/**
 * 个人中心---账户安全
 * @author gaohongwei <hongwei.gao@yoho.cn>
 * @date: 2016/8/30
 */
'use strict';

const mRoot = '../models';
const accountModel = require(`${mRoot}/account-service`); // user  model
const helpers = global.yoho.helpers;

/**
 * 账户安全
 * @param  {[type]} req [description]
 * @param  {[type]} res [description]
 * @return {[type]}     [description]
 */
exports.index = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    let responseData = {};

    // 真实数据输出
    req.ctx(accountModel).getAccountInfo(uid).then(result => {
        responseData.user = result;
        responseData.meAccountPage = true;
        responseData.account = {
            allAccounts: result
        };
        res.render('home/account/account', responseData);
    }).catch(next);

};

/**
 * 个人中心-修改密码身份验证-page1/2/3
 */
exports.userPwd = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    let responseData = {
        module: 'home',
        page: 'validate'
    };

    let params = req.query;

    params.uid = uid;

    // 真实数据输出
    req.ctx(accountModel).userPwd(params).then(result => {
        // 第二步验证没通过,就跳转
        if (result.code && result.code === 400) {
            res.redirect(helpers.urlFormat(result.url, result.params));
        } else {
            Object.assign(responseData, result);
            res.render('home/account/userpwd', responseData);
        }
    }).catch(next);

};

/**
 * 个人中心-邮箱验证身份-page1/2/3
 */
exports.userEmail = (req, res, next) => {
    if (!req.user.uid) {
        return res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    let responseData = {
        module: 'home',
        page: 'validate'
    };

    let params = req.query;

    params.uid = uid;

    // 真实数据输出
    req.ctx(accountModel).userEmail(params).then(result => {
        // 第二步验证没通过,就跳转
        if (result.code && result.code === 400) {
            res.redirect(helpers.urlFormat(result.url, result.params));
        } else {
            Object.assign(responseData, result);
            res.render('home/account/email', responseData);
        }
    }).catch(next);

};

/**
 * 个人中心-手机验证身份-page1/2/3
 */
exports.userMobile = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    let responseData = {
        module: 'home',
        page: 'validate'
    };

    let params = req.query;

    params.uid = uid;

    // 真实数据输出
    req.ctx(accountModel).userMobile(params).then(result => {
        // 第二步验证没通过,就跳转
        if (result.code && result.code === 400) {
            res.redirect(helpers.urlFormat(result.url, result.params));
        } else {
            Object.assign(responseData, result);
            res.render('home/account/mobile', responseData);
        }
    }).catch(next);

};

/**
 * 分-验证图形验证码-ajax
 */
exports.checkVerifyCode = (req, res, next) => {
    // 真实数据输出
    req.ctx(accountModel).checkVerifyCode(req).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 分-验证密码正确性-ajax
 */
exports.checkPassword = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    req.uid = req.user.uid;

    // 真实数据输出
    req.ctx(accountModel).checkPassword(req).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 身份验证-登录密码验证Ajax
 */
exports.verifyPassword = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    req.uid = req.user.uid;

    // 真实数据输出
    req.ctx(accountModel).verifyPassword(req).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 修改密码
 */
exports.modifyPwd = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    let params = req.body;

    params.uid = uid;

    // 真实数据输出
    req.ctx(accountModel).modifyPwd(req, params).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 身份验证时,发送邮件-ajax
 */
exports.sendEmail = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    req.uid = req.user.uid;

    // 真实数据输出
    req.ctx(accountModel).sendEmail(req).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 分-修改邮箱前,校验邮箱-ajax
 */
exports.checkEmail = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    req.uid = req.user.uid;

    // 真实数据输出
    req.ctx(accountModel).checkEmail(req).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 修改验证邮箱校验并发送邮件-ajax
 *
 */
exports.modifyEmail = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    req.uid = req.user.uid;

    // 真实数据输出
    req.ctx(accountModel).modifyEmail(req).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 个人中心-邮箱验证身份-邮件发送成功过渡页
 */
exports.sendEmailSuccess = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    let responseData = {
        module: 'home',
        page: 'validate'
    };

    let params = req.query;

    params.uid = uid;

    // 真实数据输出
    req.ctx(accountModel).sendEmailSuccess(params).then(result => {
        Object.assign(responseData, result);
        res.render('home/account/email', responseData);
    }).catch(next);

};

/**
 * 点击邮箱验证链接方法--修改验证邮箱
 */
exports.mailResult = (req, res, next) => {

    // 真实数据输出
    req.ctx(accountModel).mailResult(req.query).then(result => {
        // 第二步验证没通过,就跳转
        if (result.code && result.code === 400) {
            res.redirect(helpers.urlFormat(result.url, result.params));
        } else {
            res.json(result);
        }
    }).catch(next);
};

/**
 * 分-检查手机号是否可修改-ajax
 */
exports.checkMobile = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }

    // 真实数据输出
    req.ctx(accountModel).checkMobile(req.query, req.user.uid).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 校验短信验证码-ajax
 */
exports.checkMobileMsg = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    // 真实数据输出
    req.ctx(accountModel).checkMobileMsg(req, uid).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 向验证手机号发送短信-ajax
 */
exports.sendMobileMsg = (req, res, next) => {
    if (!req.user.uid) {
        res.redirect(helpers.urlFormat('/signin.html'));
    }
    let uid = req.user.uid;

    req.ctx(accountModel).sendMobileMsg(req, uid).then(result => {
        res.json(result);
    }).catch(next);
};

/**
 * 修改验证手机号
 */
exports.modifyMobile = (req, res, next) => {
    let uid = req.user.uid;
    let area = req.body.area || '86';
    let mobile = req.body.mobile;
    let code = req.body.code;

    if (!code || !mobile) {
        return res.json({
            code: 400,
            message: '填写错误'
        });
    }

    req.ctx(accountModel).newBindMobile(area, mobile, code, uid).then(result => {
        res.json(result);
    }).catch(next);
};

exports.newSendMsg = (req, res, next) => {
    let mobile = req.body.mobile;
    let area = req.body.area || '86';
    let captcha = req.body.verifyCode;
    let sessionId = req.session.id;

    if (!area || !mobile) {
        return res.json({
            code: 400,
            message: '填写错误'
        });
    }

    req.ctx(accountModel).newSendMsg(area, mobile, sessionId, captcha).then(result => {
        return res.json(result);
    }).catch(next);
};

exports.newBindCheck = (req, res, next) => {
    let mobile = req.body.mobile;
    let area = req.body.area || '86';
    let code = req.body.code;

    if (!area || !mobile || !code) {
        return res.json({
            code: 400,
            message: '填写错误'
        });
    }

    req.ctx(accountModel).newBindCheck(area, mobile, code).then(result => {
        return res.json(result);
    }).catch(next);
};