Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
DP_projet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
VILLAUME Lucas
DP_projet
Commits
e56a38bc
Commit
e56a38bc
authored
1 year ago
by
mhdaltaweel
Browse files
Options
Downloads
Patches
Plain Diff
se connecter
parent
2962f2fe
No related branches found
No related tags found
1 merge request
!2
Doc
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
app.js
+47
-20
47 additions, 20 deletions
app.js
views/index.ejs
+27
-17
27 additions, 17 deletions
views/index.ejs
views/login.ejs
+1
-1
1 addition, 1 deletion
views/login.ejs
views/partials/header.ejs
+14
-4
14 additions, 4 deletions
views/partials/header.ejs
with
89 additions
and
42 deletions
app.js
+
47
−
20
View file @
e56a38bc
...
@@ -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
This diff is collapsed.
Click to expand it.
views/index.ejs
+
27
−
17
View file @
e56a38bc
<!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
This diff is collapsed.
Click to expand it.
views/login.ejs
+
1
−
1
View file @
e56a38bc
...
@@ -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
)
{%
>
...
...
This diff is collapsed.
Click to expand it.
views/partials/header.ejs
+
14
−
4
View file @
e56a38bc
<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>
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment