sms.js
2.29 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
/**
* 短信controller
* @author: leo <qi.li@yoho.cn>
* @date: 2017/06/26
*/
'use strict';
const _ = require('lodash');
const EventEmitter = require('events');
const SmsModel = require('../models/sms');
const smsController = {
/**
* 发送短信验证码
* @param req
* @param res
* @returns {*|boolean}
*/
sendCode(req, res) {
const em = new EventEmitter();
const area = (req.body.area || '').trim();
const mobile = (req.body.mobile || '').trim();
const inValid = [area, mobile].some(v => v === '');
em.on('resolve', () => {
_.set(req.session, 'smsLogin.area', area);
_.set(req.session, 'smsLogin.mobile', mobile);
req.ctx(SmsModel).sendSMS(mobile, area, 1)
.then(result => {
if (result.code === 200) {
return res.json({
code: 200,
message: '验证码发送成功'
});
}
res.json({
code: 500,
message: '验证码发送失败'
});
});
});
em.on('reject', error => {
res.json(error);
});
if (!inValid) {
em.emit('resolve');
return;
}
em.emit('reject', {
code: 400,
message: '请填写手机号'
});
},
/**
* 验证码校验
* @param req
* @param res
*/
checkCode(req, res, next) {
const code = (req.body.code || '').trim();
const area = _.get(req.session, 'smsLogin.area', '');
const mobile = _.get(req.session, 'smsLogin.mobile', '');
req.ctx(SmsModel).verifySMS(mobile, area, code, 1)
.then(result => {
if (result.code !== 200) {
res.json(result);
return;
}
if (result.data.is_pass !== 'Y') {
res.json({
code: 501,
message: '验证码与手机号不匹配'
});
return;
}
next();
});
}
};
module.exports = smsController;