Add skeleton

This commit is contained in:
2025-09-17 13:28:58 +07:00
parent 945e0083d2
commit 2c546a2ec7
3 changed files with 69 additions and 0 deletions

View File

@@ -0,0 +1,8 @@
const { ErrorHandler } = require("../helpers/error");
// eslint-disable-next-line no-unused-vars
const unknownEndpoint = (request, response) => {
throw new ErrorHandler(401, "unknown endpoint");
};
module.exports = unknownEndpoint;

14
middleware/verifyAdmin.js Normal file
View File

@@ -0,0 +1,14 @@
const { ErrorHandler } = require("../helpers/error");
module.exports = (req, res, next) => {
const { roles } = req.user;
if (roles && roles.includes("admin")) {
req.user = {
...req.user,
roles,
};
return next();
} else {
throw new ErrorHandler(401, "require admin role");
}
};

47
middleware/verifyToken.js Normal file
View File

@@ -0,0 +1,47 @@
const jwt = require("jsonwebtoken");
const { ErrorHandler } = require("../helpers/error");
const verifyToken = (req, res, next) => {
const authHeader = req.header("Authorization");
// console.log("authHeader", authHeader)
// Pastikan header Authorization ada dan berisi token
if (!authHeader || !authHeader.startsWith("Bearer ")) {
throw new ErrorHandler(401, "Token missing or invalid");
}
// Ambil token dari header Authorization
const token = authHeader.split(" ")[1];
try {
// const decoded = jwt.decode(token, { complete: true });
// console.log("decoded", decoded)
// console.log("==============================")
// console.log("token", token)
// console.log("process.env.SECRET", process.env.SECRET)
// // console.log("==============================> ", jwt.verify(token, process.env.SECRET))
// jwt.verify(token, process.env.SECRET, (err, decoded) => {
// if (err) {
// console.error('Error verifying token: ==============================>', err.message);
// } else {
// console.log('Decoded payload: ==============================>', decoded);
// }
// });
const verified = jwt.verify(token, process.env.SECRET);
req.tokenExtract = verified;
// console.log(req.tokenExtract);
req.userID = req.tokenExtract.user_id
req.tenantID = req.tokenExtract.tenant_id
req.roleID = req.tokenExtract.role_id
req.body.userID = req.tokenExtract.user_id
req.body.tenantID = req.tokenExtract.tenant_id
req.query.tenantID = req.tokenExtract.tenant_id
next();
} catch (error) {
throw new ErrorHandler(401, error.message || "Invalid Token");
}
};
module.exports = verifyToken;