2023-05-12 23:40:39 +05:30

34 lines
904 B
JavaScript

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,
}