| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 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('../utils/axios')const qs = require('qs')exports.login = handleError(async (req, res) => {  const isValid = validate(res, req.body, {    username: 'string',    password: 'string',  })  if (!isValid) return  const { username, password } = req.body  const user = await axios.post(    'https://api.kemdikbud.go.id:8243/manakses/2.0/auth',    qs.stringify({      username,      password,    }),    {      'Content-Type': 'application/x-www-form-urlencoded',    }  )  if (user.code === 400) {    return response.error(res, {      code: 400,      message: user.message,    })  }  let cekUser = await userModel.findOne({    user_id: user.id,  })  if (!cekUser) {    let role = user.peran[0].peran    if (process.env.ENV === 'production') {      role = {        id:          role.id === 2024            ? 2020            : role.id === 2025            ? 2021            : role.id === 2026            ? 2022            : role.id === 2027 && 2023,        nama: role.nama,        menu: role.menu,      }    }    cekUser = await userModel.create({      user_id: user.id,      nama: user.nama,      lembaga: user.peran[0].organisasi,      email: user.username,      no_hp: user.no_hp,      alamat: user.alamat,      role,      isPublic: false,      isPrivate: false,    })  }  const accessToken = jwt.sign({ _id: cekUser._id }, process.env.SECRET, {    expiresIn: '1d',  })  const data = {    token: `Bearer ${accessToken}`,    user: cekUser,  }  response.success(res, {    message: 'Berhasil Login',    data,  })})
 |