From 5b3d5cdce1df2a6490d9c89d90ecda72e510c437 Mon Sep 17 00:00:00 2001 From: Joaquin Date: Wed, 21 May 2025 09:39:13 -0700 Subject: [PATCH] fix/improved user info retention on signup/login forms --- app.js | 34 ++++++++++++++++++++-------------- src/auth/authentication.js | 8 ++++---- src/views/login.ejs | 2 +- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app.js b/app.js index 831e82d..b1935f5 100644 --- a/app.js +++ b/app.js @@ -56,21 +56,19 @@ app.get('/', (req, res) => { app.get('/signup', (req, res) => { let error = req.session.errMessage; delete req.session.errMessage; - + const ignore = ["User not found", "Incorrect password"]; if (ignore.includes(error)) error = ""; - res.render('signup', { errMessage: error }); - return res.status(status.Ok); -}); - -app.get('/signup/:name/:email', (req, res) => { - const ignore = ["User not found", "Incorrect password"]; - if (ignore.includes(req.session.errMessage)) req.session.errMessage = ""; - res.render('signup', { - errMessage: req.session.errMessage, - name: req.params.name, - email: req.params.email - }); + + if (req.query.name && req.query.email) { + res.render('signup', { + errMessage: error, + name: req.query.name, + email: req.query.email + }); + } else { + res.render('signup', { errMessage: error }); + } return res.status(status.Ok); }); @@ -79,7 +77,15 @@ app.get('/login', (req, res) => { res.redirect("/home"); return res.status(status.Ok); } - res.render('login', { errMessage: req.session.errMessage }); + + if (req.query.email) { + res.render('login', { + errMessage: req.session.errMessage, + email: req.query.email + }); + } else { + res.render('login', { errMessage: req.session.errMessage }); + } return res.status(status.Ok); }); diff --git a/src/auth/authentication.js b/src/auth/authentication.js index 2d0ff1f..d4a8c5e 100644 --- a/src/auth/authentication.js +++ b/src/auth/authentication.js @@ -43,13 +43,13 @@ module.exports = (users) => { if (!user) { req.session.errMessage = "User not found"; res.status(status.NotFound); - return res.redirect("/login"); + return res.redirect(`/login/?email=${req.body.email}`); } if (!bcrypt.compareSync(req.body.password, user.password)) { req.session.errMessage = "Incorrect password"; res.status(status.Unauthorized); - return res.redirect("/login"); + return res.redirect(`/login/?email=${req.body.email}`); } req.session.authenticated = true; @@ -96,7 +96,7 @@ module.exports = (users) => { if (req.body.password != req.body.repassword) { req.session.errMessage = "Passwords must match"; res.status(status.BadRequest); - return res.redirect(`/signup/${req.body.name}/${req.body.email}`); + return res.redirect(`/signup/?name=${req.body.name}&email=${req.body.email}`); } let strength = passwordStrength(req.body.password); @@ -104,7 +104,7 @@ module.exports = (users) => { if (strength.id < 2) { req.session.errMessage = `Password ${strength.value}`; res.status(status.BadRequest); - return res.redirect(`/signup/${req.body.name}/${req.body.email}`); + return res.redirect(`/signup/?name=${req.body.name}&email=${req.body.email}`); } let hashedPassword = await bcrypt.hashSync(req.body.password, salt); diff --git a/src/views/login.ejs b/src/views/login.ejs index e0c99d0..1b41753 100644 --- a/src/views/login.ejs +++ b/src/views/login.ejs @@ -11,7 +11,7 @@ + placeholder="Enter Email" value="<%= typeof email != 'undefined' ? email : '' %>"/>