diff options
author | Julien Dessaux | 2022-10-31 22:40:42 +0100 |
---|---|---|
committer | Julien Dessaux | 2022-10-31 22:40:42 +0100 |
commit | b91bb0a133aa3d0400beb359fed4e641c888ab26 (patch) | |
tree | 0b703fab300ab39ffd39708b193bcfa09e89f6f5 | |
parent | Fixed middleware action without return (diff) | |
download | jeux-de-mots-b91bb0a133aa3d0400beb359fed4e641c888ab26.tar.gz jeux-de-mots-b91bb0a133aa3d0400beb359fed4e641c888ab26.tar.bz2 jeux-de-mots-b91bb0a133aa3d0400beb359fed4e641c888ab26.zip |
Added logout route, and a way to display the logout menu item on relevant pages
-rw-r--r-- | controllers/login.js | 7 | ||||
-rw-r--r-- | controllers/play.js | 9 | ||||
-rw-r--r-- | main.js | 2 | ||||
-rw-r--r-- | routes/login.js | 4 | ||||
-rw-r--r-- | routes/logout.js | 15 | ||||
-rw-r--r-- | routes/play.js | 5 | ||||
-rw-r--r-- | static/index.css | 8 | ||||
-rw-r--r-- | views/nav.ejs | 3 |
8 files changed, 46 insertions, 7 deletions
diff --git a/controllers/login.js b/controllers/login.js index bff312e..b274a9e 100644 --- a/controllers/login.js +++ b/controllers/login.js @@ -1,6 +1,7 @@ -function makeLoginController() { +function makeController(req) { return { - title: "Connection", + title: "Connexion", + user: req.session.user, data: { username: "", password: "", @@ -9,4 +10,4 @@ function makeLoginController() { }; } -export default makeLoginController; +export default makeController; diff --git a/controllers/play.js b/controllers/play.js new file mode 100644 index 0000000..c00d15d --- /dev/null +++ b/controllers/play.js @@ -0,0 +1,9 @@ +function makeController(req, cwdata) { + return { + title: "Jouer", + user: req.session.user, + CWDATA: cwdata, + }; +} + +export default makeController; @@ -2,6 +2,7 @@ import express from "express"; import helmet from "./middlewares/helmet.js"; import loginRouter from "./routes/login.js"; +import logoutRouter from "./routes/logout.js"; import playRouter from "./routes/play.js"; import rootRouter from "./routes/root.js"; @@ -12,6 +13,7 @@ app.set("views", "./views"); app.set("view engine", "ejs"); app.use("/login", loginRouter); +app.use("/logout", logoutRouter); app.use("/play", playRouter); app.use("/static", express.static("static")); app.use("/", rootRouter); diff --git a/routes/login.js b/routes/login.js index 4bcd42f..9684f8a 100644 --- a/routes/login.js +++ b/routes/login.js @@ -13,7 +13,7 @@ router.get("/", (req, res) => { if (req.session.user !== undefined) { return res.redirect(302, "/play"); } - return res.render("login", makeLoginController()); + return res.render("login", makeLoginController(req)); }); const checkUsername = check("username") @@ -28,7 +28,7 @@ router.post("/", [bodyParser, checkUsername, checkPassword], async (req, res) => if (req.session.user !== undefined) { return res.redirect(302, "/play"); } - let controller = makeLoginController(); + let controller = makeLoginController(req); controller.data = req.body; controller.errors = validationResult(req).mapped(); if (Object.keys(controller.errors).length === 0) { diff --git a/routes/logout.js b/routes/logout.js new file mode 100644 index 0000000..a31d9fe --- /dev/null +++ b/routes/logout.js @@ -0,0 +1,15 @@ +import express from "express"; + +import session from "../middlewares/sessions.js"; + +const router = express.Router(); +router.use(session); + +router.get("/", (req, res) => { + if (req.session.user !== undefined) { + req.session.destroy(); + } + return res.redirect(302, "/"); +}); + +export default router; diff --git a/routes/play.js b/routes/play.js index 1c87895..4db9acd 100644 --- a/routes/play.js +++ b/routes/play.js @@ -1,5 +1,6 @@ import express from "express"; +import makePlayController from "../controllers/play.js"; import requireAuth from "../middlewares/requireAuth.js"; import session from "../middlewares/sessions.js"; @@ -8,7 +9,7 @@ router.use(session); router.use(requireAuth); router.get("/", (req, res) => { - const CWDATA = { + const cwdata = { board: [ [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], @@ -28,7 +29,7 @@ router.get("/", (req, res) => { ], letters: [ "A", "B", "C", "D", "E", "F", "JOKER" ] }; - return res.render("play", {CWDATA: CWDATA, title: "Jouer"}); + return res.render("play", makePlayController(req, cwdata)); }); export default router; diff --git a/static/index.css b/static/index.css index f0ed5e9..f5ef0b9 100644 --- a/static/index.css +++ b/static/index.css @@ -49,12 +49,20 @@ header nav ul li { padding: 14px 16px; text-decoration: none; } +header nav ul li a { + color: #b58900; + display: block; + text-decoration: none; +} header nav ul li.nav-menu-title { float: left; text-transform: uppercase; font-weight: 700; margin-right: 4px; } +header nav ul li.nav-menu-margin-left { + margin-left: 4px; +} form input { margin-bottom: 8px; } diff --git a/views/nav.ejs b/views/nav.ejs index b494b55..8298004 100644 --- a/views/nav.ejs +++ b/views/nav.ejs @@ -2,6 +2,9 @@ <nav> <ul> <li class="nav-menu-title">Jeu de mots</li> + <% if (user !== undefined) { %> + <li class=".nav-menu-margin-left"><a href="/logout">Déconnexion</a></li> + <% } %> </ul> </nav> </header> |