From ce34fa94dcd8d24e6b10e475bc1fb5ef7e6e0f1c Mon Sep 17 00:00:00 2001 From: vincentastolfi Date: Wed, 12 Jun 2024 18:19:25 +0200 Subject: [PATCH] :sparkles: log in features working and new script for tables rows deletion if needed --- db_clean.sql | 3 +++ index.js | 25 +++++++++++++++++++++++ public/pages/connectionView.html | 14 +++++++++++++ public/scripts/connection.js | 35 +++++++++++++++++++++++++++++++- 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 db_clean.sql diff --git a/db_clean.sql b/db_clean.sql new file mode 100644 index 0000000..91ff494 --- /dev/null +++ b/db_clean.sql @@ -0,0 +1,3 @@ +USE maettleship; + +DELETE FROM users; \ No newline at end of file diff --git a/index.js b/index.js index b42165c..a71b682 100644 --- a/index.js +++ b/index.js @@ -39,6 +39,31 @@ app.get('/game', (req, res) => { res.sendFile(path.join(__dirname, '/public/pages/gameView.html')) }) +app.post('/logIn', (req, res) => { + const { pseudo, password } = req.body; + + if (!pseudo || !password) { + return res.status(400).send('Email and password are required.'); + } + + const query = 'SELECT * FROM users WHERE pseudo = ? AND password = ?'; + db.query(query, [pseudo, password], (err, results) => { + if (err) { + console.error('Error inserting user into the database:', err); + return res.status(500).send({message: 'Internal server error.'}); + } + + if (results.length === 1) { + const token = jwt.sign({ pseudo }, secretKey, { expiresIn: '1h' }); + res.cookie('authToken', token, { httpOnly: true, secure: false }); + + res.status(201).send({message: 'User logged in successfully.', redirectUrl: '/game' }); + } else { + res.status(401).send({message: "Username or password is incorrect"}) + } + }) +}) + app.post('/register', (req, res) => { const { pseudo, password } = req.body; diff --git a/public/pages/connectionView.html b/public/pages/connectionView.html index 259f909..6aa288b 100644 --- a/public/pages/connectionView.html +++ b/public/pages/connectionView.html @@ -19,6 +19,20 @@
+ +
+

Log in

+
+ + + + + + + +
+
+
diff --git a/public/scripts/connection.js b/public/scripts/connection.js index c74869f..e3a8068 100644 --- a/public/scripts/connection.js +++ b/public/scripts/connection.js @@ -1,5 +1,5 @@ document.getElementById('registerForm').addEventListener('submit', async function (event) { - event.preventDefault(); // Prevent the default form submission + event.preventDefault(); const pseudo = document.getElementById('pseudo').value; const password = document.getElementById('password').value; @@ -31,4 +31,37 @@ document.getElementById('registerForm').addEventListener('submit', async functio messageDiv.textContent = `Error: ${error.message}`; messageDiv.style.color = 'red'; } +}); + +document.getElementById('logInForm').addEventListener('submit', async function (event) { + event.preventDefault(); + + const pseudo = document.getElementById('pseudoLogIn').value; + const password = document.getElementById('passwordLogIn').value; + const messageDiv = document.getElementById('messageLogIn'); + + try { + const response = await fetch('/logIn', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ pseudo, password }), + }); + + const result = await response.json(); + + if (response.ok) { + messageDiv.textContent = 'User logged in successfully!'; + messageDiv.style.color = 'green'; + window.location.href = result.redirectUrl; + } else { + messageDiv.textContent = `Error: ${result.message || 'Unknown error'}`; + messageDiv.style.color = 'red'; + } + } catch (error) { + console.log("testEL") + messageDiv.textContent = `Error: ${error.message}`; + messageDiv.style.color = 'red'; + } }); \ No newline at end of file