36 lines
866 B
JavaScript
36 lines
866 B
JavaScript
const redis = require("../Miscellaneous/redis");
|
|
|
|
async function isAuthenticated(res, req) {
|
|
const cookieHeader = req.getHeader("cookie");
|
|
const cookie = cookieHeader.split("ps=")[1];
|
|
if (!cookie) {
|
|
res.cork(() => res
|
|
.writeStatus("400")
|
|
.end("Unauthenticated"));
|
|
|
|
return false;
|
|
};
|
|
|
|
const formattedCookie = cookie.split(".")[0].slice(4);
|
|
const cookieInDB = await redis.get(`sess:${formattedCookie}`);
|
|
if (!cookieInDB) {
|
|
res.cork(() => res
|
|
.writeStatus("400")
|
|
.end("Unauthenticated"));
|
|
|
|
return false;
|
|
};
|
|
|
|
const parsedCookie = JSON.parse(cookieInDB);
|
|
if (!parsedCookie.isAdmin) {
|
|
res.cork(() => res
|
|
.writeStatus("400")
|
|
.end("Unauthorized"));
|
|
|
|
return false;
|
|
};
|
|
|
|
return true;
|
|
};
|
|
|
|
module.exports = isAuthenticated; |