Add skeleton
This commit is contained in:
8
middleware/unKnownEndpoint.js
Normal file
8
middleware/unKnownEndpoint.js
Normal 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
14
middleware/verifyAdmin.js
Normal 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
47
middleware/verifyToken.js
Normal 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;
|
||||||
Reference in New Issue
Block a user