This commit is contained in:
florian 2025-09-06 00:14:34 +02:00
parent fdbea29b82
commit d1b1ebac98
2 changed files with 41 additions and 18 deletions

View File

@ -32,9 +32,7 @@ function sendMail(to, subject, html) {
.catch(error => console.error('Error sending email:', error)); .catch(error => console.error('Error sending email:', error));
} }
function authenticateToken(req, res, next) { function authenticateToken(token) {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
if (!token) return res.sendStatus(401); if (!token) return res.sendStatus(401);
jwt.verify(token, process.env.JWT_SECRET, (err, user) => { jwt.verify(token, process.env.JWT_SECRET, (err, user) => {
@ -98,8 +96,15 @@ app.get('/', (req, res) => {
); );
// Exemple d'utilisation: // Exemple d'utilisation:
app.get('/api/loginToken', authenticateToken, (req, res) => { app.get('/api/loginToken', async (req, res) => {
res.json({ message: 'Accès autorisé', user: req.user });
if (!req.cookies) return res.sendStatus(401);
if (!req.cookies.auth_token) return res.sendStatus(401);
const token = req.cookies.auth_token;
authenticateToken(token);
}); });
app.post('/api/login', async (req, res) => { app.post('/api/login', async (req, res) => {
@ -128,7 +133,14 @@ app.post('/api/login', async (req, res) => {
{ expiresIn: process.env.JWT_EXPIRATION } { expiresIn: process.env.JWT_EXPIRATION }
); );
res.status(200).json({ message: 'Login successful', token }); res.cookie("auth_token", token,
{
httpOnly: true,
sameSite: 'Strict'
}
)
// res.status(200).json({ message: 'Login successful', token });
} catch (err) { } catch (err) {
console.error('Database error:', err); console.error('Database error:', err);
res.status(500).json({ message: 'Internal server error' }); res.status(500).json({ message: 'Internal server error' });

View File

@ -18,11 +18,7 @@ loginForm.addEventListener('submit', async (event) => {
}); });
if (response.ok) { if (response.ok) {
const responseData = await response.json(); // localStorage.setItem('token', responseData.token);
console.log('Login successful:', responseData);
localStorage.setItem('token', responseData.token);
displayLoginSuccess(); displayLoginSuccess();
} else { } else {
@ -37,21 +33,36 @@ loginForm.addEventListener('submit', async (event) => {
); );
async function isLoggedInFunction() { async function isLoggedInFunction() {
const token = localStorage.getItem('token'); // const token = localStorage.getItem('token');
if (!token) return false; // if (!token) return false;
// try {
// const response = await fetch('/api/loginToken', {
// method: 'GET',
// headers: {
// 'Authorization': `Bearer ${token}`
// }
// });
// if (response.ok) {
// return true;
// } else {
// localStorage.removeItem('token');
// return false;
// }
// } catch (error) {
// console.error('Error checking login status:', error);
// return false;
// }
try { try {
const response = await fetch('/api/loginToken', { const response = await fetch('/api/loginToken', {
method: 'GET', method: 'GET'
headers: {
'Authorization': `Bearer ${token}`
}
}); });
if (response.ok) { if (response.ok) {
return true; return true;
} else { } else {
localStorage.removeItem('token');
return false; return false;
} }
} catch (error) { } catch (error) {