Nous allons mettre en place un système d'authentification , de base on voulait rajouter
req.isLoggedIn = true
Pour l'utiliser dans nos routes, le problème étant que chaque requête envoyée par l'utilisateur est différente donc cette méthode ne fonctionnera jamais !
Autre façon de faire du coup est d'utiliser les cookies !
exports.postLogin = (req, res, next) => {
// Max-age is the life-span of the cookie, set in seconds
// The cookie is only being set if the page is httpS with Secure
// HttpOnly tells that the cookie is only available in Http, client-side JS cannot access it
res.setHeader('Set-Cookie', 'loggedIn=true; Max-Age=1800; Secure; HttpOnly')
res.redirect('/');
};
Les cookies sont envoyés automatiquement a chaque requête vers notre serveur mongodb!
Pour récupérer la valeur des cookies :
console.log(req.get("Cookie"));
// => LOG : io=gsUqrjBAjN2h6ASRAAAA; loggedIn=true
Le cookie qui nous intéresse est le deuxième, pour récupérer sa valeur on va :
const isLoggedIn = req.get("Cookie").split(';')[1].trim().split('=')[1];
// ==> LOG : true
ATTENTION : Les cookies c'est sympa mais il faut les éviter pour stocker des données sensibles car ils sont très facilement manipulables et modifiables par les utilisateurs !
Session nous permet de stocker des infos dans le back-end.

Pour implémenter nos session :
npm i --save express-session
// app.js
const session = require('express-session');
app.use(session({
secret: 'we are all satoshi',
resave: false,
saveUninitialized: false
}))
Ensuite comme plus haut avec notre cookie on peux stocker notre isLoggedIn, ce dernier sera stocké dans le back-end dans la session et donc accessible avec toutes les requetés de notre user.
exports.postLogin = (req, res, next) => {
User.findById('5ed0dff41f49081c9c3d7872')
.then(user => {
req.session.isLoggedIn = true;
req.session.user = user;
res.redirect('/');
})
.catch(err => {
console.log(err)
})
};