diff options
author | Julien Dessaux | 2022-10-27 23:56:29 +0200 |
---|---|---|
committer | Julien Dessaux | 2022-10-27 23:56:29 +0200 |
commit | 2611ded920a8345922346ed0d43e4efdd94401a1 (patch) | |
tree | 3313d976fbb11bdbfd1841ce336cc4372f9ab32c /routes | |
parent | Allow for placing the first word (diff) | |
download | jeux-de-mots-2611ded920a8345922346ed0d43e4efdd94401a1.tar.gz jeux-de-mots-2611ded920a8345922346ed0d43e4efdd94401a1.tar.bz2 jeux-de-mots-2611ded920a8345922346ed0d43e4efdd94401a1.zip |
Began implementing middlewares, session and auth
Diffstat (limited to 'routes')
-rw-r--r-- | routes/login.js | 44 | ||||
-rw-r--r-- | routes/play.js | 35 | ||||
-rw-r--r-- | routes/root.js | 14 |
3 files changed, 78 insertions, 15 deletions
diff --git a/routes/login.js b/routes/login.js new file mode 100644 index 0000000..9b04324 --- /dev/null +++ b/routes/login.js @@ -0,0 +1,44 @@ +import express from "express"; +import { check, validationResult, matchedData } from "express-validator"; + +import makeLoginController from "../controllers/login.js" +import bodyParser from "../middlewares/formParser.js"; +import session from "../middlewares/sessions.js"; + +const router = express.Router(); +router.use(session); + +router.get("/", (req, res) => { + if (req.session.userId) { + return res.redirect(302, "/play"); + } + return res.render("login", makeLoginController()); +}); + +const checkUsername = check("username") + .trim() + .matches(/^[a-z][-a-z0-9_]+$/i) + .withMessage("Un identifiant d'au moins deux charactères est requis."); +const checkPassword = check("password") + .isStrongPassword() + .withMessage("Veuillez utiliser un mot de passe d'au moins 8 caractères contenant au moins une minuscule, majuscule, chiffre et charactère spécial."); + +router.post("/", [bodyParser, checkUsername, checkPassword], (req, res) => { + if (req.session.userId) { + return res.redirect(302, "/play"); + } + let controller = makeLoginController(); + controller.data = req.body; + controller.errors = validationResult(req).mapped(); + if (Object.keys(controller.errors).length === 0) { + // TODO check password + req.session.userId = 1; + // TODO add an error variable for the username/password mismatch + } + if (Object.keys(controller.errors).length === 0) { + return res.redirect(302, "/play"); + } + return res.render("login", controller); +}); + +export default router; diff --git a/routes/play.js b/routes/play.js index 5e904c4..1c87895 100644 --- a/routes/play.js +++ b/routes/play.js @@ -1,25 +1,30 @@ import express from "express"; +import requireAuth from "../middlewares/requireAuth.js"; +import session from "../middlewares/sessions.js"; + const router = express.Router(); +router.use(session); +router.use(requireAuth); router.get("/", (req, res) => { const CWDATA = { board: [ - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "T", "E", "S","T", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ], - [ "", "", "", "", "","", "", "", "", "","", "", "", "", "" ] + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ], + [ "", "", "", "", "","", "", "", "", "", "", "", "", "", "" ] ], letters: [ "A", "B", "C", "D", "E", "F", "JOKER" ] }; diff --git a/routes/root.js b/routes/root.js new file mode 100644 index 0000000..be3681a --- /dev/null +++ b/routes/root.js @@ -0,0 +1,14 @@ +import express from "express"; + +import session from "../middlewares/sessions.js"; + +const router = express.Router(); +router.use(session); +router.get("/", (req, res) => { + if (session.loggedIn) { + return res.redirect(302, "/play"); + } + return res.redirect(302, "/login"); +}); + +export default router; |