-
Notifications
You must be signed in to change notification settings - Fork 3
/
smsVerification.js
55 lines (44 loc) · 1.33 KB
/
smsVerification.js
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
'use strict';
const Axios = require('axios');
const Cache = require('memory-cache');
const Config = require('../config');
const postVerifyCode = async (request, h) => {
const { phoneNumber } = request.payload;
Cache.del(phoneNumber);
let verifyCode;
for (let i = 0; i < 6; i++) {
verifyCode += parseInt(Math.random() * 10);
};
Cache.put(phoneNumber, verifyCode);
try {
Axios.post(
`https://api-sens.ncloud.com/v1/sms/services/${Config.SENSAPI}/messages`,
{
'X-NCP-auth-key': Config.SENSAPI.AccessKeyId,
'X-NCP-service-secret': Config.SENSAPI.serviceSecret
},
{
type: 'sms',
from: Config.SENSAPI.companyNumber,
to: [phoneNumber],
content: `인증번호는 ${verifyCode}입니다.`
}
)
return h.response('인증번호 요청 성공');
} catch (e) {
Cache.del(phoneNumber);
throw e;
};
};
const confirmVerifyCode = async (request, h) => {
const { phoneNumber, verifyCode } = request.payload;
const CacheData = Cache.get(phoneNumber);
if (!CacheData) {
return h.response('인증번호를 다시 요청해주세요.').code(400);
}
if (CacheData !== verifyCode) {
return h.response('인증번호를 다시 요청해주세요.').code(400);
}
Cache.del(phoneNumber);
return h.response('인증번호 검증 성공');
};