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, }, }) })