Files
Timetable-V2/server/api/auth.js
2022-05-19 23:46:33 +02:00

40 lines
917 B
JavaScript

export class Auth {
activeSessions = [];
constructor() {}
login = (req, res) => {
if (!req.body.password) {
res.redirect("/login");
return;
} else {
if (req.body.password == process.env.AUTH_PASSWORD) {
const sessionId = Math.random().toString(36).slice(-8);
this.activeSessions.push(sessionId);
res.cookie("session", sessionId, {
httpOnly: true,
expires: new Date(253402300000000),
});
res.redirect("/");
} else {
res.redirect("/login");
return;
}
}
};
checkLogin = (req, res, next) => {
if (!process.env.AUTH_PASSWORD) {
next();
return;
}
if (!req.cookies.session) {
res.sendStatus(401);
return;
} else {
if (!this.activeSessions.includes(req.cookies.session)) {
res.sendStatus(401);
return;
}
}
next();
};
}