Skip to content
Snippets Groups Projects
Commit e56a38bc authored by mhdaltaweel's avatar mhdaltaweel
Browse files

se connecter

parent 2962f2fe
No related branches found
No related tags found
1 merge request!2Doc
...@@ -6,6 +6,7 @@ const auth = require('./controller/AuthController.js'); ...@@ -6,6 +6,7 @@ const auth = require('./controller/AuthController.js');
const bodyParser = require('body-parser'); const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser'); const cookieParser = require('cookie-parser');
const bcrypt = require('bcrypt'); const bcrypt = require('bcrypt');
const { createHash, randomBytes } = require('crypto');
...@@ -40,30 +41,46 @@ app.get("/signup" , (req ,res)=>{ ...@@ -40,30 +41,46 @@ app.get("/signup" , (req ,res)=>{
res.render("signup", { title: 'Inscription' }); res.render("signup", { title: 'Inscription' });
}); });
const saltRounds = 10; function generateRandomSalt() {
return randomBytes(16).toString('hex');
}
app.post('/signup', async (req, res) => { app.post('/signup', async (req, res) => {
try { try {
// Récupère les données du formulaire const { username, email, password } = req.body;
const { username, email, password } = req.body;
// hasher le passWord // Générer un sel aléatoire
const hashedPassword = await bcrypt.hash(password, saltRounds); const salt = generateRandomSalt();
// Insère les données dans la base de données // Concaténer le mot de passe avec le sel et hacher le tout
await db.insert('users', { username, email, password:hashedPassword }); const passwordToHash = salt + password;
const hashedPassword = createHash('sha256').update(passwordToHash).digest('hex');
//res.send('Inscription réussie'); // Insérer les données dans la base de données avec le sel et le mot de passe haché
res.redirect("/login"); await db.insert('users', { username, email, salt, password: hashedPassword });
// Rediriger vers la page de connexion après l'inscription
res.redirect('/login');
} catch (error) { } catch (error) {
console.error(error); console.error(error);
res.status(500).send('Erreur lors de l\'inscription'); res.status(500).send("Erreur lors de l'inscription");
} }
}); });
// route pour logout
app.post('/logout', function(req, res) {
res.clearCookie('accessToken'); // Assurez-vous que le nom du cookie est correct
res.redirect('/accueil');
});
//route pour document //route pour document
app.get("/document" , (req ,res)=>{ app.get("/document", (req, res) => {
res.render("document", { title: 'doc' }); if (!res.locals.user) {
return res.redirect("/login"); // Redirige vers la page de connexion si l'utilisateur n'est pas connecté
}
res.render("document", { title: 'Créer un Document' });
}); });
...@@ -95,15 +112,25 @@ async function dbAdmin(req, res){ ...@@ -95,15 +112,25 @@ async function dbAdmin(req, res){
} }
async function postLogin(req, res){ async function postLogin(req, res){
let { username, password } = req.body; const { username, password } = req.body;
let token = await auth.checkLogin(username, password);
if (token == -1) { try {
res.render("login",{username, password, error: "Il semblerait que le nom d'utilisateur ou le mot de passe soit incorrect."}); let token = await auth.checkLogin(username, password);
} else { if (token == -1) {
res.cookie("accessToken", token, {httpOnly: true}); // Si l'authentification échoue
res.redirect("/accueil"); res.render("login", { error: "Il semblerait que le nom d'utilisateur ou le mot de passe soit incorrect." });
} else {
// Si l'authentification réussit
res.cookie("accessToken", token, { httpOnly: true });
res.redirect("/accueil");
}
} catch (error) {
console.error(error);
res.status(500).send('Erreur lors de la connexion');
} }
} }
module.exports = app; module.exports = app;
\ No newline at end of file
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="fr">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Accueil</title> <title>Accueil</title>
<link rel="stylesheet" href="/css/style.css"> <link rel="stylesheet" href="/css/style.css">
</head> </head>
<body> <body>
<div class="home-container"> <div class="home-container">
<h1>Bienvenue sur Notre Application de Tableur</h1> <h1>Bienvenue sur Notre Application de Tableur</h1>
<p>Organisez vos données efficacement et en toute simplicité.</p> <p>Organisez vos données efficacement et en toute simplicité.</p>
<% if (locals.user) { %>
<p>Bonjour, <%= locals.user.username %>!</p>
<div class="button-container">
<a href="/document" class="button">Créer un Document</a>
<form action="/logout" method="post" style="display: inline;">
<button type="submit" class="button">Se Déconnecter</button>
</form>
</div>
<% } else { %>
<div class="button-container"> <div class="button-container">
<a href="/login" class="button">Se Connecter</a> <a href="/login" class="button">Se Connecter</a>
<a href="/signup" class="button">S'inscrire</a> <a href="/signup" class="button">S'inscrire</a>
</div> </div>
</div> <% } %>
</div>
<script> <script>
// JavaScript pour d'autres interactions si nécessaire // JavaScript pour d'autres interactions si nécessaire
</script> </script>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<h1>Connexion</h1> <h1>Connexion</h1>
<form action="/login" method="post"> <form action="/login" method="post">
<input type="text" name="username" value="<%= locals.username ?? '' %>"> <input type="text" name="username" value="<%= locals.username ?? '' %>">
<input type="password" name="password" value="<%= locals.password ?? '' %>"> <input type="password" name="password" placeholder="Mot de passe">
<input type="submit" class="button" value="Se connecter"> <input type="submit" class="button" value="Se connecter">
</form> </form>
<% if (locals.error) {%> <% if (locals.error) {%>
......
<header>
<!-- Contenu de l'en-tête ici -->
<header> <p>this is header</p>
<!-- Contenu de ton en-tête ici -->
<p>this is header</p> <% if (locals.user) { %>
</header> <div class="main-content">
Bonjour, <%= locals.user.username %>!
<form action="/logout" method="post">
<button type="submit">Se Déconnecter</button>
</form>
</div>
<% } %>
</header>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment