-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadminAuth.js
More file actions
33 lines (30 loc) · 1.27 KB
/
adminAuth.js
File metadata and controls
33 lines (30 loc) · 1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
const jwt = require('jsonwebtoken')
const secret = process.env.SECRET
// console.log("secret from amdinAuth-->", secret)
const adminAuth = (req, res, next) => {
//on récupère notre token dans le header de la requète HTTP
const token = req.headers['x-access-token']
//si il ne trouve pas de token
if(token === undefined){
res.json({status: 404, msg: "Erreur, le token n'a pas été trouvé."})
} else {
//sinon il a trouvé un token, utilisation de la fonction de vérification du token
jwt.verify(token, secret, (err, decoded)=>{
if(err){
res.json({status: 401, msg: "Erreur, le token est invalide."})
} else {
//le token est vérifié et valide
//on rajoute une propriété id dans req, qui récupère l'id du token décrypté
req.id = decoded.id
// console.log(decoded)
if(decoded.role === "admin"){
//on sort de la fonction, on autorise l'accés à la callback de la route back demandée
next()
} else {
res.json({status: 401, msg: "Erreur, vous n'êtes pas administrateur."})
}
}
})
}
}
module.exports = adminAuth