server.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const express = require("express");
  2. const jwt = require("jsonwebtoken");
  3. const cors = require("cors");
  4. const app = express();
  5. const PORT = 8081; // Porta del server
  6. const SECRET_KEY = "supersegreto"; // Chiave segreta per firmare il token
  7. app.use(express.json()); // Abilita parsing JSON
  8. app.use(cors()); // Permette richieste da altri domini
  9. app.use(express.static("public")); // Cartella per i file statici (es. login.html)
  10. // Simuliamo un database di utenti
  11. const users = {
  12. admin: "1234", // username: password
  13. fpinna: "1234"
  14. };
  15. // **ROUTE LOGIN**
  16. app.post("/api/login", (req, res) => {
  17. const { username, password } = req.body;
  18. if (users[username] && users[username] === password) {
  19. // Genera un token valido per 1 ora
  20. const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: "1h" });
  21. res.json({ token });
  22. } else {
  23. res.status(401).json({ message: "Credenziali errate" });
  24. }
  25. });
  26. // **ROUTE PROTETTA**
  27. app.get("/index.html", (req, res) => {
  28. const token = req.headers.authorization?.split(" ")[1];
  29. if (!token) {
  30. return res.status(401).send("Accesso negato!");
  31. }
  32. try {
  33. jwt.verify(token, SECRET_KEY);
  34. console.log(__dirname);
  35. res.sendFile(path.join(__dirname, "public", "index.html"));
  36. } catch {
  37. res.status(403).send("Token non valido!");
  38. }
  39. });
  40. app.listen(PORT, () => console.log(`Server in ascolto su http://localhost:${PORT}`));