|
|
@@ -7,9 +7,8 @@ const jwt = require('jsonwebtoken')
|
|
|
const moment = require('moment')
|
|
|
const logModel = require('../../model/log.model')
|
|
|
const auth = require('../../middleware/verifyToken')
|
|
|
-const otp = require('../../utils/otp')
|
|
|
+const generateOTP = require('../../utils/otp')
|
|
|
const { genSaltSync, compareSync, hashSync } = require('bcrypt')
|
|
|
-const { notifWA2 } = require('../../utils/v1/notifFunction')
|
|
|
const role = require('../../middleware/role')
|
|
|
const pddiktiService = require('../../services/v2/pddikti.service')
|
|
|
|
|
|
@@ -108,11 +107,11 @@ exports.loginToPT = [
|
|
|
let dataLembaga
|
|
|
|
|
|
try {
|
|
|
- const userResponse = await pddiktiService.login({username: user.email, password})
|
|
|
+ const userResponse = await pddiktiService.login({ username: user.email, password })
|
|
|
if (userResponse.code && userResponse.code !== 200) {
|
|
|
return response.error(res, {
|
|
|
code: 401,
|
|
|
- message: userResponse.message,
|
|
|
+ message: userResponse.message
|
|
|
})
|
|
|
}
|
|
|
dataLembaga = await pddiktiService.getPT(lembaga_id)
|
|
|
@@ -179,22 +178,34 @@ exports.sendOTP = [
|
|
|
const user = req.user
|
|
|
let no_hp = req.body.no_hp
|
|
|
no_hp = req.body.no_hp.substring(0, 1) === '0' ? '62' + no_hp.substring(1) : no_hp
|
|
|
- const generatedOtp = otp.generate()
|
|
|
- res.cookie('sidali-otp', hashSync(generatedOtp, genSaltSync(10)), {
|
|
|
+ const generatedOtp = generateOTP(4)
|
|
|
+ res.cookie('sidali-otp', jwt.sign({ no_hp, otp: generatedOtp }, process.env.SRU51, {
|
|
|
+ expiresIn: '5m'
|
|
|
+ }), {
|
|
|
httpOnly: true,
|
|
|
- secure: true
|
|
|
+ secure: true,
|
|
|
+ expires: moment().add(5, 'minutes').toDate()
|
|
|
})
|
|
|
- await notifWA2(
|
|
|
- TEMPLATE_VERIFIKASI,
|
|
|
- { nama: user.nama, no_hp: no_hp },
|
|
|
- [
|
|
|
+ try {
|
|
|
+ const waResult = await pddiktiService.whatsapp(TEMPLATE_VERIFIKASI, [{ name: user.nama, number: no_hp }], [
|
|
|
{ key: '1', value: 'pt', value_text: user.lembaga.nama },
|
|
|
{ key: '3', value: 'no_verifikasi', value_text: generatedOtp },
|
|
|
- { key: '2', value: 'no_laporan', value_text: '' }
|
|
|
- ]
|
|
|
- )
|
|
|
+ { key: '2', value: 'no_laporan', value_text: '-' }
|
|
|
+ ])
|
|
|
+ if ([200, 201].includes(waResult.status)) {
|
|
|
+ return response.error(res, {
|
|
|
+ code: waResult[0].error.code,
|
|
|
+ error: waResult[0].error.messages
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ return response.error(res, {
|
|
|
+ code: 500,
|
|
|
+ message: e.message
|
|
|
+ })
|
|
|
+ }
|
|
|
return response.success(res, {
|
|
|
- message: 'Berhasil mengirimkan OTP'
|
|
|
+ message: 'Berhasil mengirimkan OTP',
|
|
|
})
|
|
|
}
|
|
|
]
|