change mongodb to mongo atlas

This commit is contained in:
kicap1992
2022-07-20 01:22:21 +08:00
parent 58671436a7
commit 576831eae8
23 changed files with 5985 additions and 119 deletions

View File

@ -0,0 +1,131 @@
//create express router
const express = require('express');
const router = express.Router();
const { pengirimModel, kurirModel } = require('../models/users_model');
var ironSession = require("iron-session/express").ironSession;
var session = ironSession({
cookieName: "myapp_cookiename",
// password: process.env.SECRET_COOKIE_PASSWORD,
password: process.env.IRON_SESSION,
cookieOptions: {
secure: process.env.NODE_ENV === "production",
},
});
const jwt = require('jsonwebtoken');
// create '/get_all_kurir' get method
router.get('/get_all_kurir_verifikasi', session, authenticateToken, async (req, res) => {
try {
const kurir = await kurirModel.find({
status : 'Evaluasi'
}).sort({ created_at: -1 })
return res.status(200).send({ status: true, data: kurir })
}
catch (error) {
console.log(error);
res.status(500).send({ message: error.message });
}
})
// create '/get_all_kurir' get method
router.get('/get_all_kurir', session, authenticateToken, async (req, res) => {
try {
const kurir = await kurirModel.find({
status : 'Aktif'
}).sort({ created_at: -1 })
return res.status(200).send({ status: true, data: kurir })
}
catch (error) {
console.log(error);
res.status(500).send({ message: error.message });
}
})
router.get('/get_all_pengirim', session, authenticateToken, async (req, res) => {
try {
const pengirim = await pengirimModel.find().sort({ created_at: -1 })
return res.status(200).send({ status: true, data: pengirim })
}
catch (error) {
console.log(error);
res.status(500).send({ message: error.message });
}
})
// create 'verifikasi_kurir' post method
router.post('/verifikasi_kurir', session, authenticateToken, async (req, res) => {
try {
const { id_kurir } = req.body;
console.log(id_kurir, "ini id kurir di server")
const kurir = await kurirModel.findByIdAndUpdate(id_kurir, {
status : 'Aktif'
});
const kurir_all = await kurirModel.find({
status : 'Evaluasi'
});
return res.status(200).send({ status: true, data: kurir_all })
}
catch (error) {
console.log(error);
res.status(500).send({ message: error.message });
}
})
// create 'verifikasi_kurir' post method
router.post('/batalkan_kurir', session, authenticateToken, async (req, res) => {
try {
const { id_kurir } = req.body;
console.log(id_kurir, "ini id kurir di server")
const kurir = await kurirModel.findByIdAndUpdate(id_kurir, {
status : 'Ditolak'
});
const kurir_all = await kurirModel.find({
status : 'Evaluasi'
});
return res.status(200).send({ status: true, data: kurir_all })
}
catch (error) {
console.log(error);
res.status(500).send({ message: error.message });
}
})
function authenticateToken(req, res, next) {
// console.log(req.session, " ini authenticate")
const authHeader = req.headers['authorization']
const token = authHeader && authHeader.split(' ')[1]
if (token == null) {
req.session.destroy();
return res.sendStatus(401);
}
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if (err) {
req.session.destroy();
return res.sendStatus(403);
}
req.user = user
next()
})
}
module.exports = router;

View File

@ -13,6 +13,9 @@ const ktp_kurir_folder_id = process.env.KTP_KURIR_FOLDER_ID;
const ktp_holding_kurir_folder_id = process.env.KTP_HOLDING_KURIR_FOLDER_ID;
const kenderaan_kurir_folder_id = process.env.KENDERAAN_KURIR_FOLDER_ID;
const io = require("socket.io-client");
const socket = io("http://localhost:3001/");
async function cek_user_kurir(req, res, next) {
if (req.query.username == null && req.query.password == null && req.query.id == null) return res.status(401).send({ message: 'Not Authorized' });
const cek_login = await loginUserModel.findOne({
@ -106,10 +109,10 @@ router.get('/pengiriman_kurir_dalam_pengesahan', cek_user_kurir, async (req, res
{ status_pengiriman: 'Menghantar Paket Pengiriman Ke Penerima' },
]
}).select(' -kurir -__v ').sort({ updated_at: -1 }).populate({
path: 'pengirim',
select: '-__v -created_at -updated_at -status'
path: 'pengirim',
select: '-__v -created_at -updated_at -status'
});
});
res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
@ -129,10 +132,10 @@ router.get('/pengiriman_completed', cek_user_kurir, async (req, res) => {
{ status_pengiriman: 'Paket Diterima Oleh Penerima' },
]
}).select(' -kurir -__v ').sort({ updated_at: -1 }).populate({
path: 'pengirim',
select: '-__v -created_at -updated_at -status'
path: 'pengirim',
select: '-__v -created_at -updated_at -status'
});
});
res.status(200).send({ message: 'Data berhasil ditemukan', data: cek_data });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
@ -192,10 +195,10 @@ router.get('/pengirim', cek_user_kurir, async (req, res) => {
// create '/detail_pengiriman' get route
router.get('/detail_pengiriman', cek_user_kurir, async (req, res) => {
try{
try {
id_pengiriman = req.query.id_pengiriman;
// console.log('masuk get detail_pengiriman');
const cek_data = await pengirimanBarangModel.findOne({
_id: id_pengiriman,
kurir: req.query.id
@ -243,9 +246,94 @@ router.post('/mengambil_paket_pengiriman', cek_user_kurir, async (req, res) => {
// console.log(cek_pengiriman);
res.status(200).send({ message: 'Pengiriman berhasil disahkan', data: cek_pengiriman });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})
// create 'konfirmasi_terima_paket_pengirim' post route
router.post('/konfirmasi_terima_paket_pengirim', cek_user_kurir, async (req, res) => {
try {
const id_pengiriman = req.body.id_pengiriman;
const cek_data = await pengirimanBarangModel.findOne({
_id: id_pengiriman,
kurir: req.query.id
});
if (!cek_data) return res.status(400).send({ message: 'Data tidak ditemukan', data: null });
const cek_pengiriman = await pengirimanBarangModel.findOneAndUpdate({
_id: id_pengiriman,
kurir: req.query.id
}
, {
status_pengiriman: 'Menghantar Paket Pengiriman Ke Penerima',
// push to history
$push: {
history: {
status_pengiriman: 'Menghantar Paket Pengiriman Ke Penerima',
}
},
updated_at: new Date()
}
, { new: true }
);
// console.log(cek_pengiriman);
socket.emit('info_detail_paket', {
// id_pengirim: '62be1a1a97c4a38caea7a5d8',
id_pengiriman: id_pengiriman,
})
res.status(200).send({ message: 'Paket pengiriman berhasil diterima dari pengirim\nMenghantar paket ke penerima', data: cek_pengiriman });
} catch (error) {
console.log(error);
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})
// create 'konfirmasi_terima_paket_penerima' post route
// router.post('/konfirmasi_terima_paket_penerima', cek_user_kurir, async (req, res) => {
router.post('/konfirmasi_terima_paket_penerima', async (req, res) => {
try {
const id_pengiriman = req.body.id_pengiriman;
const cek_data = await pengirimanBarangModel.findOne({
_id: id_pengiriman,
kurir: req.query.id
});
if (!cek_data) return res.status(400).send({ message: 'Data tidak ditemukan', data: null });
const cek_pengiriman = await pengirimanBarangModel.findOneAndUpdate({
_id: id_pengiriman,
kurir: req.query.id
}
, {
status_pengiriman: 'Paket Diterima Oleh Penerima',
// push to history
$push: {
history: {
status_pengiriman: 'Paket Diterima Oleh Penerima',
}
},
updated_at: new Date()
}
, { new: true }
);
// console.log(cek_pengiriman);
socket.emit('info_detail_paket', {
// id_pengirim: '62be1a1a97c4a38caea7a5d8',
id_pengiriman: id_pengiriman,
})
res.status(200).send({ message: 'Paket pengiriman berhasil diterima oleh Penerima', data: cek_pengiriman });
} catch (error) {
res.status(500).send({ message: 'Internal Server Error', data: null });
}
})

View File

@ -0,0 +1,91 @@
//create express router
const express = require('express');
const router = express.Router();
var ironSession = require("iron-session/express").ironSession;
var session = ironSession({
cookieName: "myapp_cookiename",
// password: process.env.SECRET_COOKIE_PASSWORD,
password: process.env.IRON_SESSION,
cookieOptions: {
secure: process.env.NODE_ENV === "production",
},
});
const jwt = require('jsonwebtoken');
// crate get
router.get('/', session, async (req, res) => {
try {
const username = req.query.username;
const password = req.query.password;
if(username != 'admin' && password != 'admin'){
return res.status(401).send({ status: false, message: 'username or password is wrong' })
}
data = {
role :'admin',
ini : 'aran'
}
// expired in 1 day
const accessToken = jwt.sign(data, process.env.ACCESS_TOKEN_SECRET , { expiresIn: '1d' });
req.session.data = {
accessToken: accessToken,
role : "admin"
}
await req.session.save();
return res.status(200).send({ status: true, message: 'login success' , accessToken: accessToken })
} catch (error) {
console.log(error);
res.status(500).send({ message: error.message });
}
})
// create '/logout' get method
router.get('/logout', session, authenticateToken , async (req, res) => {
try{
console.log(req.session)
// req.session.destroy();
return res.status(200).send({ status: true, message: 'logout success' })
}
catch(error){
console.log(error);
res.status(500).send({ message: error.message });
}
})
// create '/' post
router.post('/', authenticateToken, async (req, res) => {
console.log(req.user);
res.status(200).send({ status: true, message: 'login success' , user: req.user })
})
function authenticateToken(req,res,next){
// console.log(req.session , " ini authenticate")
const authHeader = req.headers['authorization']
const token = authHeader && authHeader.split(' ')[1]
if(token == null) return res.sendStatus(401)
req.session.destroy();
jwt.verify(token, process.env.ACCESS_TOKEN_SECRET, (err, user) => {
if(err) return res.sendStatus(403)
req.session.destroy();
req.user = user
next()
})
}
module.exports = router;

View File

@ -11,6 +11,9 @@ const ktp_kurir_folder_id = process.env.KTP_KURIR_FOLDER_ID;
const ktp_holding_kurir_folder_id = process.env.KTP_HOLDING_KURIR_FOLDER_ID;
const kenderaan_kurir_folder_id = process.env.KENDERAAN_KURIR_FOLDER_ID;
const io = require("socket.io-client");
const socket = io("http://localhost:3001/");
// crate get
router.get('/', async (req, res) => {
console.log("ada request login");
@ -50,7 +53,7 @@ router.get('/', async (req, res) => {
// if user is not found
if (!user) {
res.status(400).send({
status :false,
status: false,
message: 'Username dan Password Salah',
focus: 'username'
});
@ -98,14 +101,23 @@ router.post('/daftar1', async (req, res) => {
console.log(isExist + "ini adalag evaluasi");
// console.log("ini untuk nik")
if (isExist) {
let message = (isExist.status == 'Evaluasi') ? 'NIK telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\nTim kami akan mengirim ke email yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'NIK Sudah Terdaftar dan sudah diaktifkan';
let message;
if (isExist.status == 'Evaluasi') {
message = 'NIK telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\nTim kami akan mengirim ke email yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran';
} else if (isExist.status == 'Ditolak') {
message = 'NIK ini telah ditolak.\nSilahkan coba NIK lain';
} else if (isExist.status == 'Aktif') {
message = 'NIK sudah terdaftar sebelumnya';
}
// let message = (isExist.status == 'Evaluasi') ? 'NIK telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\nTim kami akan mengirim ke email yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'NIK Sudah Terdaftar dan sudah diaktifkan';
return res.status(400).send({
status: false,
message: message,
focus: 'nik'
});
}
// check if data.no_telp is exists
@ -113,7 +125,17 @@ router.post('/daftar1', async (req, res) => {
// console.log(isExist2)
// console.log("ini untuk no telpon")
if (isExist2) {
let message = (isExist2.status == 'Evaluasi') ? 'No Telpon ini telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\n Jika anda pemilik no telpon ini, Tim kami akan mengirim ke email yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'No Telpon Sudah Terdaftar dan sudah diaktifkan';
let message;
if (isExist2.status == 'Evaluasi') {
message = 'No Telpon telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami'
} else if (isExist2.status == 'Ditolak') {
message = 'No Telpon ini telah ditolak'
} else if (isExist2.status == 'Aktif') {
message = 'No Telpon sudah terdaftar sebelumnya'
}
// let message = (isExist2.status == 'Evaluasi') ? 'No Telpon ini telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\n Jika anda pemilik no telpon ini, Tim kami akan mengirim ke email yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'No Telpon Sudah Terdaftar dan sudah diaktifkan';
res.status(400).send({
status: false,
message: message,
@ -127,7 +149,17 @@ router.post('/daftar1', async (req, res) => {
// console.log(isExist3)
// console.log("ini untuk email")
if (isExist3) {
let message = (isExist3.status == 'Evaluasi') ? 'Email ini telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\nTim kami akan mengirim ke email ini yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'Email Sudah Terdaftar dan sudah diaktifkan';
let message;
if (isExist3.status == 'Evaluasi') {
message = 'Email telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami'
} else if (isExist3.status == 'Ditolak') {
message = 'Email ini telah ditolak'
} else {
message = 'Email sudah terdaftar sebelumnya'
}
// let message = (isExist3.status == 'Evaluasi') ? 'Email ini telah terdaftar sebelumnya dan sekarang dalam evaluasi tim kami.\nTim kami akan mengirim ke email ini yang anda daftarkan sebelumnya untuk konfirmasi pendaftaran' : 'Email Sudah Terdaftar dan sudah diaktifkan';
res.status(400).send({
status: false,
message: message,
@ -146,18 +178,18 @@ router.post('/daftar1', async (req, res) => {
return;
}
res.send({ status: true, message: 'Anda akan mendapat notifikasi di email anda dan juga no telpon jika admin menyetujui ataupun membatalkan pendaftaran anda' });
// console.log(data)
let new_kurir = new kurirModel(data);
let new_login = new loginUserModel(data);
new_login._idnya = new_kurir._id;
await new_kurir.save();
await new_login.save();
// console.log(new_kurir)
// console.log(new_login)
// add photo_url to new_kurir
let id_photo = googlenya.uploadFile(new_kurir._id + ".jpg", req.files.photo.path, kurir_folder_id, "ini photo kurir");
@ -180,7 +212,7 @@ router.post('/daftar1', async (req, res) => {
const ktp_holding_url = `https://drive.google.com/uc?export=view&id=${await id_ktp_holding}`
const kenderaan_url = `https://drive.google.com/uc?export=view&id=${await id_kenderaan}`
// await kurirModel.findOneAndUpdate({ _id: new_kurir._id }, {
// status: 'Aktif',
// photo_url: photo_url,
@ -188,6 +220,8 @@ router.post('/daftar1', async (req, res) => {
await kurirModel.findOneAndUpdate({ _id: new_kurir._id }, { photo_url: photo_url, ktp_url: ktp_url, ktp_holding_url: ktp_holding_url, kenderaan_url: kenderaan_url });
socket.emit('tambah_verifikasi_kurir')
// const data = await kurirModel.findOne({ _id: new_kurir._id });
// console.log(data)
@ -261,6 +295,8 @@ router.post('/daftar1', async (req, res) => {
await new_pengirim.save();
await new_login.save();
socket.emit('tambah_verifikasi_pengirim')
}