| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | 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')const convertRole = require('../utils/convertRole')const { roleData, roleDataProduction } = require('../utils/constanta')const logModel = require('../model/log.model')const ip = require('ip')const osValue = require('../utils/osValue')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,  })  let role = null  //if (process.env.ENV === 'production') {  role = user.peran.filter((e) => roleDataProduction.includes(e.peran.id))[0]  role.peran.id = convertRole(role.peran.id)  /*} else {    role = user.peran.filter((e) => roleData.includes(e.peran.id))[0]  }*/  let dataRole = {    id: role.peran.id,    nama: role.peran.nama,    menu: role.peran.menu,  }  if (!cekUser) {    cekUser = await userModel.create({      user_id: user.id,      nama: user.nama,      lembaga: role.organisasi,      email: user.username,      no_hp: user.no_hp,      alamat: user.alamat,      role: dataRole,      isPublic: false,      isPrivate: false,    })  } else {    //if (process.env.ENV === 'production') {    if (cekUser.role.id !== role.peran.id) {      await userModel.updateOne({ _id: cekUser._id }, { role: dataRole })    }    if (!cekUser.lembaga) {      await userModel.updateOne(        { _id: cekUser._id },        { lembaga: role.organisasi }      )    }    if (cekUser.role.id !== role.peran.id || !cekUser.lembaga) {      cekUser = await userModel.findOne({        user_id: user.id,      })    }    //}  }  const accessToken = jwt.sign({ _id: cekUser._id }, process.env.SECRET, {    expiresIn: '1d',  })  const data = {    token: `Bearer ${accessToken}`,    user: cekUser,  }  const now = new Date()  const time = now.getTime()  now.setTime(time + 24 * 60 * 60 * 1000)  res.cookie('sidali-cookie', accessToken, {    httpOnly: true,    expires: now,  })  response.success(res, {    message: 'Berhasil Login',    data,  })})exports.logout = (req, res) => {  res.cookie('sidali-cookie', '', {    expires: new Date(),  })  response.success(res, {    message: 'Berhasil Logout',  })}
 |