diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | app.js | 6 | ||||
-rw-r--r-- | auth/index.js | 5 | ||||
-rw-r--r-- | overview/public/index.html | 5 |
4 files changed, 16 insertions, 2 deletions
@@ -6,3 +6,5 @@ node_* *.csv users.json profile/public/uploads/**/* + +images.txt @@ -2,6 +2,7 @@ require("dotenv").config(); require("./db").init(); const express = require("express"); const session = require("express-session"); +const fs = require("fs").promises; require("log-timestamp"); const { auth, checkUser, checkAdmin } = require("./auth"); @@ -39,4 +40,9 @@ app.use("/profile", checkUser, profile); app.use("/admin", checkAdmin, admin); // Lel app.use("/auth", auth); +app.get("/images", checkUser, async (req, res) => { + const links = (await fs.readFile(__dirname + "/images.txt", "utf8")).split("\n"); + res.redirect(links[req.session.cid - 1]); +}); + app.listen(process.env.PORT || 5005, () => console.log(`Server started on http://localhost:${process.env.PORT}`)); diff --git a/auth/index.js b/auth/index.js index 6514a8d..0f63a55 100644 --- a/auth/index.js +++ b/auth/index.js @@ -30,7 +30,9 @@ app.post("/api/login", async (req, res) => { const { username, password } = req.body; if (!(username && password)) return res.redirect("/auth"); - const user = (await db.query("SELECT id, password, is_admin FROM users WHERE username = ?", [username]))[0]; + const user = ( + await db.query("SELECT id, password, is_admin, class_id FROM users WHERE username = ?", [username]) + )[0]; if (!user || !user.password) return res.redirect("/auth"); const loggedIn = await bcrypt.compare(password, user.password); if (loggedIn) { @@ -38,6 +40,7 @@ app.post("/api/login", async (req, res) => { req.session.loggedIn = true; req.session.isAdmin = user.is_admin; req.session.uid = user.id; + req.session.cid = user.class_id; } res.redirect("/auth"); }); diff --git a/overview/public/index.html b/overview/public/index.html index c51123a..218dce3 100644 --- a/overview/public/index.html +++ b/overview/public/index.html @@ -47,7 +47,10 @@ <a href="/poll?type=pupil" class="pure-menu-link">Schüler-Ranking</a> </li> <li class="pure-menu-item"> - <a href="poll?type=teacher" class="pure-menu-link">Lehrer-Ranking</a> + <a href="/poll?type=teacher" class="pure-menu-link">Lehrer-Ranking</a> + </li> + <li class="pure-menu-item"> + <a href="/images" target="_blank" class="pure-menu-link">Klassenbilder</a> </li> </ul> </div> |