| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | const handleError = require('../utils/handleError')const response = require('../utils/responseHandler')const userModel = require('../model/user.model')const jwt = require('jsonwebtoken')const { validate } = require('../utils/validation')const axios = require('axios')const qs = require('qs')const https = require('https')exports.login = handleError(async (req, res) => {  const httpsAgent = new https.Agent({    rejectUnauthorized: false,  })  const isValid = validate(res, req.body, {    username: 'string',    password: 'string',  })  if (!isValid) return  const { username, password } = req.body  const data = qs.stringify({    username,    password,  })  const user = await axios.post(    'https://api.kemdikbud.go.id:8243/manakses/2.0/auth',    data,    {      headers: {        Authorization: `Bearer ${process.env.TOKEN}`,        'Content-Type': 'application/x-www-form-urlencoded',        Accept: 'application/json',      },      httpsAgent,    }  )  if (user.data.code === 400) {    return response.error(res, {      code: 400,      message: user.data.message,    })  }  const cekUser = await userModel.findOne({    user_id: user.data.id,  })  if (!cekUser) {    await userModel.create({      user_id: user.data.id,      nama: user.data.nama,      lembaga: user.data.peran[0].organisasi.nama,      email: user.data.username,      no_hp: user.data.no_hp,      alamat: user.data.alamat,      isPublic: false,      isPrivate: false,    })  }  const accessToken = jwt.sign({ user_id: user.data.id }, process.env.SECRET, {    expiresIn: '1d',  })  response.success(res, {    message: 'Berhasil Login',    data: {      token: `Bearer ${accessToken}`,      user: user.data,    },  })})
 |