// static variables import express from "express"; const app = express(); const port = 4000; import { loginUser, createUser, updateUser, deleteUser } from "./database.js"; app.use(express.urlencoded({ extended: true })); app.set("view engine", "ejs"); import path from "path"; import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); app.listen(port, () => { console.log(`Server is running on http://localhost:${port}`); }); // Middleware to parse JSON bodies app.use(express.json()); // Middleware to serve static files from the 'public' directory app.use(express.static("public")); // Main code below // Route to handle GET requests to the root URL app.get("/", (req, res) => { res.render("login.ejs", { error: null, reload: false }); console.log("Frontend user requested frontend login page."); }); let latestUser; // Route to handle user login app.post("/login", (req, res) => { loginUser(req.body.username, req.body.password).then((result) => { if (result.success) { res.status(200).render("dashboard.ejs", { sqlResult: result, newLink: `/dashboard/${result.user.id}`, alert: null, success: null, }); latestUser = result; } else { res .status(401) .render("login.ejs", { error: result.message, reload: true }); } }); }); app.post(["/createUser", "/updateUser", "/deleteUser"], (req, res) => { let action = req.path; let funcName; if (action === "/createUser") { funcName = createUser; } else if (action === "/updateUser") { funcName = updateUser; } else if (action === "/deleteUser") { if (latestUser && req.body.username !== latestUser.user.username) { funcName = deleteUser; } else { res.status(400).render("dashboard.ejs", { sqlResult: latestUser, newLink: latestUser ? `/dashboard/${latestUser.id}` : "#", alert: "Cannot delete the currently logged-in user!", success: null, }); return; } } else { res.status(400).send("Invalid action"); return; } funcName( req.body.username, req.body.first_name, req.body.last_name, req.body.password, req.body.email ).then((result) => { if (result.success === true) { res.status(201).render("dashboard.ejs", { sqlResult: latestUser, newLink: `/dashboard/${latestUser.id}`, alert: null, success: "User action successful!", }); } else { res.status(400).render("dashboard.ejs", { sqlResult: latestUser, newLink: `/dashboard/${latestUser.id}`, alert: "User action failed!", success: null, }); } }); }); // error handling code app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send("Something broke!"); });