Files
UAS-SIG/middleware/auth_middleware.js
T
2026-06-03 20:05:50 +07:00

32 lines
1.3 KiB
JavaScript

const jwt = require('jsonwebtoken');
// Menjaga rute spesifik agar hanya dapat diakses dengan token yang valid
const verify_token = (req, res, next) => {
try {
const auth_header = req.headers['authorization'];
// Praktik keamanan: Memastikan header ada dan memisahkan kata 'Bearer ' dari token utamanya
const token = auth_header && auth_header.split(' ')[1];
if (!token) {
return res.status(401).json({ error: 'Akses ditolak: Token tidak ditemukan' });
}
// Baris kompleks: jwt.verify() mendekripsi token menggunakan kunci rahasia yang sama dengan saat pembuatan. Jika kunci cocok dan token belum kedaluwarsa, ia akan mengembalikan data payload (decoded), jika tidak, ia akan melempar error (termasuk jika token dipalsukan).
jwt.verify(token, 'kunci_rahasia_webgis_pontianak', (err, decoded_data) => {
if (err) {
return res.status(403).json({ error: 'Sesi tidak valid atau telah berakhir' });
}
req.admin_terotentikasi = decoded_data;
next();
});
} catch (error) {
console.error('Kesalahan verifikasi keamanan:', error);
res.status(500).json({ error: 'Kesalahan internal saat memverifikasi sesi' });
}
};
module.exports = {
verify_token
};