mirror of
https://github.com/20kaushik02/express-sequelize-backend-template.git
synced 2026-01-25 07:14:06 +00:00
utils
This commit is contained in:
34
middleware/admin.js
Normal file
34
middleware/admin.js
Normal file
@@ -0,0 +1,34 @@
|
||||
const typedefs = require("../typedefs");
|
||||
const logger = require("../utils/logger")(module);
|
||||
|
||||
const creds = JSON.parse(process.env.ADMIN_CREDS);
|
||||
|
||||
/**
|
||||
* Middleware to validate admin access
|
||||
* @param {typedefs.Req} req
|
||||
* @param {typedefs.Res} res
|
||||
* @param {typedefs.Next} next
|
||||
*/
|
||||
const adminQueryCreds = async (req, res, next) => {
|
||||
try {
|
||||
/** @type {JSON} */
|
||||
const { user, access } = req.query;
|
||||
if (creds[user] === access) {
|
||||
logger.info("Admin access - " + user);
|
||||
next();
|
||||
}
|
||||
else {
|
||||
// we do a bit of trolling here
|
||||
const unauthIP = req.headers['x-real-ip'] || req.ip
|
||||
logger.warn("Intruder alert.", { ip: unauthIP });
|
||||
return res.status(401).send("Intruder alert. IP address: " + unauthIP);
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error("adminQueryCreds", { error });
|
||||
return res.status(500).send({ message: "Server Error. Try again." });
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
adminQueryCreds,
|
||||
}
|
||||
Reference in New Issue
Block a user