yazid138 3 년 전
부모
커밋
cb08663d73

+ 24 - 21
controller/auth.controller.js

@@ -8,6 +8,8 @@ const qs = require('qs')
 const convertRole = require('../utils/convertRole')
 const { roleData } = 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, {
@@ -38,19 +40,21 @@ exports.login = handleError(async (req, res) => {
   let cekUser = await userModel.findOne({
     user_id: user.id,
   })
-  let role =
-    process.env.ENV === 'production'
-      ? user.peran.filter((e) => roleData.includes(convertRole(e.peran.id)))[0]
-      : user.peran.filter((e) => roleData.includes(e.peran.id))[0]
-  let dataRole = {}
+  let role = null
+  if (process.env.ENV === 'production') {
+    role = user.peran.filter((e) =>
+      roleData.includes(convertRole(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) {
-    if (process.env.ENV === 'production') {
-      dataRole = {
-        id: convertRole(role.peran.id),
-        nama: role.peran.nama,
-        menu: role.peran.menu,
-      }
-    }
     cekUser = await userModel.create({
       user_id: user.id,
       nama: user.nama,
@@ -64,12 +68,7 @@ exports.login = handleError(async (req, res) => {
     })
   } else {
     if (process.env.ENV === 'production') {
-      if (cekUser.role.id !== convertRole(role.peran.id)) {
-        dataRole = {
-          id: convertRole(role.peran.id),
-          nama: role.peran.nama,
-          menu: role.peran.menu,
-        }
+      if (cekUser.role.id !== role.peran.id) {
         await userModel.updateOne({ _id: cekUser._id }, { role: dataRole })
       }
       if (!cekUser.lembaga) {
@@ -78,15 +77,19 @@ exports.login = handleError(async (req, res) => {
           { lembaga: role.organisasi }
         )
       }
-      cekUser = await userModel.findOne({
-        user_id: user.id,
-      })
+      if (cekUser.role.id !== role.peran.id || !cekUser.lembaga) {
+        cekUser = await userModel.findOne({
+          user_id: user.id,
+        })
+      }
     }
   }
 
   await logModel.create({
     user: cekUser._id,
     aktivitas: `Berhasil login`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   const accessToken = jwt.sign({ _id: cekUser._id }, process.env.SECRET, {

+ 8 - 0
controller/laporan.controller.js

@@ -10,6 +10,8 @@ const { notifWA } = require('../utils/notifFunction')
 const { addManyDokumen } = require('../utils/dokumenFunction')
 const userModel = require('../model/user.model')
 const { cekSatuDataLaporan, cekBanyakDataLaporan } = require('../utils/cekData')
+const ip = require('ip')
+const osValue = require('../utils/osValue')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -73,6 +75,8 @@ exports.create = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil membuat laporan, laporan id: ${data._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {
@@ -265,6 +269,8 @@ exports.public = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Public berhasil membuat laporan, laporan id: ${data._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {
@@ -374,6 +380,8 @@ exports.update = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil update laporan id: ${laporan._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {

+ 4 - 0
controller/laporan/evaluasi.controller.js

@@ -6,6 +6,8 @@ const { validate } = require('../../utils/validation')
 const { addManyDokumen } = require('../../utils/dokumenFunction')
 const { cekSatuDataLaporan } = require('../../utils/cekData')
 const pemantauanModel = require('../../model/pemantauan.model')
+const ip = require('ip')
+const osValue = require('../../utils/osValue')
 
 exports.add = handleError(async (req, res) => {
   const user = req.user
@@ -69,6 +71,8 @@ exports.add = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil melakukan evaluasi pada laporan id: ${laporan._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {

+ 4 - 0
controller/laporan/jadwal.controller.js

@@ -5,6 +5,8 @@ const response = require('../../utils/responseHandler')
 const { validate } = require('../../utils/validation')
 const pemantauanModel = require('../../model/pemantauan.model')
 const logModel = require('../../model/log.model')
+const ip = require('ip')
+const osValue = require('../../utils/osValue')
 
 exports.update = handleError(async (req, res) => {
   const user = req.user
@@ -61,6 +63,8 @@ exports.update = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil ubah jadwal laporan id: ${laporan._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {

+ 4 - 0
controller/log.controller.js

@@ -2,6 +2,8 @@ const logModel = require('../model/log.model')
 const handleError = require('../utils/handleError')
 const response = require('../utils/responseHandler')
 const { validate } = require('../utils/validation')
+const ip = require('ip')
+const osValue = require('../utils/osValue')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -15,6 +17,8 @@ exports.create = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {

+ 3 - 10
controller/pemantauan.controller.js

@@ -59,23 +59,16 @@ exports.getPT = handleError(async (req, res) => {
 })
 
 exports.public = handleError(async (req, res) => {
-  const { no_hp, no_laporan } = req.query
-  if (!no_hp || !no_laporan) {
+  const { no_laporan } = req.query
+  if (!no_laporan) {
     return response.error(res, {
       message: 'query no_hp dan no_laporan harus ada',
     })
   }
-  const user = await userModel.find({ no_hp })
-  if (!user.length) {
-    return response.error(res, {
-      message: 'user tidak ditemukan',
-    })
-  }
-  const user_id = user.map((e) => e._id)
+
   const laporan = await laporanModel
     .findOne({
       no_laporan,
-      user: { $in: user_id },
     })
     .populate('dokumen')
     .populate({ path: 'pelanggaran', select: 'pelanggaran' })

+ 4 - 0
controller/sanksi.controller.js

@@ -13,6 +13,8 @@ const {
   cekBanyakDataSanksi,
 } = require('../utils/cekData')
 const laporanModel = require('../model/laporan.model')
+const ip = require('ip')
+const osValue = require('../utils/osValue')
 
 exports.create = handleError(async (req, res) => {
   const { no_sanksi, keterangan } = req.body
@@ -75,6 +77,8 @@ exports.create = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil melakukan penetapan sanksi pada laporan id: ${laporan._id}, sanksi id: ${data._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {

+ 6 - 0
controller/sanksi/banding.controller.js

@@ -8,6 +8,8 @@ const { hariKerja } = require('../../utils/hariKerja')
 const pemantauanModel = require('../../model/pemantauan.model')
 const { notifWA } = require('../../utils/notifFunction')
 const logModel = require('../../model/log.model')
+const ip = require('ip')
+const osValue = require('../../utils/osValue')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -65,6 +67,8 @@ exports.create = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil mengajukan banding pada sanksi id: ${sanksi._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
   return response.success(res, {
     data,
@@ -137,6 +141,8 @@ exports.createJawaban = handleError(async (req, res) => {
     aktivitas: `Berhasil ${
       sanksi.jawaban?.banding ? 'mengubah jawaban' : 'menjawab'
     } pengajuan banding pada sanksi id: ${sanksi._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {

+ 6 - 0
controller/sanksi/cabutSanksi.controller.js

@@ -6,6 +6,8 @@ const { cekSatuDataSanksi, cekSatuDataLaporan } = require('../../utils/cekData')
 const response = require('../../utils/responseHandler')
 const pemantauanModel = require('../../model/pemantauan.model')
 const logModel = require('../../model/log.model')
+const ip = require('ip')
+const osValue = require('../../utils/osValue')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -52,6 +54,8 @@ exports.create = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil melakukan cabut_sanksi pada sanksi id: ${sanksi._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
   return response.success(res, {
     data,
@@ -124,6 +128,8 @@ exports.createJawaban = handleError(async (req, res) => {
     aktivitas: `Berhasil ${
       sanksi.jawaban?.cabut_sanksi ? 'mengubah jawaban' : 'menjawab'
     } pengajuan pencabutan sanski pada sanksi id: ${sanksi._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
   return response.success(res, {
     data,

+ 6 - 0
controller/sanksi/keberatan.controller.js

@@ -8,6 +8,8 @@ const { hariKerja } = require('../../utils/hariKerja')
 const pemantauanModel = require('../../model/pemantauan.model')
 const { notifWA } = require('../../utils/notifFunction')
 const logModel = require('../../model/log.model')
+const ip = require('ip')
+const osValue = require('../../utils/osValue')
 
 exports.create = handleError(async (req, res) => {
   const user = req.user
@@ -69,6 +71,8 @@ exports.create = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil mengajukan keberatan pada sanksi id: ${sanksi._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
   return response.success(res, {
     data,
@@ -146,6 +150,8 @@ exports.createJawaban = handleError(async (req, res) => {
     aktivitas: `Berhasil ${
       sanksi.jawaban?.keberatan ? 'mengubah jawaban' : 'menjawab'
     } pengajuan keberatan pada sanksi id: ${sanksi._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
 
   return response.success(res, {

+ 4 - 0
controller/sanksi/perbaikan.controller.js

@@ -7,6 +7,8 @@ const response = require('../../utils/responseHandler')
 const pemantauanModel = require('../../model/pemantauan.model')
 const { notifWA } = require('../../utils/notifFunction')
 const logModel = require('../../model/log.model')
+const ip = require('ip')
+const osValue = require('../../utils/osValue')
 
 exports.add = handleError(async (req, res) => {
   const user = req.user
@@ -74,6 +76,8 @@ exports.add = handleError(async (req, res) => {
   await logModel.create({
     user: user._id,
     aktivitas: `Berhasil melakukan perbaikan pada sanksi id: ${sanksi._id}`,
+    os: osValue(),
+    ipv4: ip.address('public', 'ipv4'),
   })
   return response.success(res, {
     data,

+ 2 - 0
model/log.model.js

@@ -11,6 +11,8 @@ module.exports = mongoose.model(
         ref: user,
       },
       aktivitas: { type: String },
+      os: { type: String },
+      ipv4: { type: String },
     },
     { timestamps: true }
   ),

+ 15 - 0
utils/osValue.js

@@ -0,0 +1,15 @@
+const osValue = process.platform
+
+module.exports = () => {
+  if (osValue == 'darwin') {
+    return 'Mac OS'
+  } else if (osValue == 'win32') {
+    return 'Windows OS'
+  } else if (osValue == 'android') {
+    return 'Android OS'
+  } else if (osValue == 'linux') {
+    return 'Linux OS'
+  } else {
+    return 'Other OS'
+  }
+}