Initialisation module "passport"
Bonjour à tous,
Je débute en Node et je me suis intéressé au module "passport" pour gérer les sessions utilisateurs.
J'ai trouvé ce tuto: https://blog.risingstack.com/node-he...n-passport-js/
Le code complet qui illustre le tuto est là: https://github.com/RisingStack/nodehero-authentication
J'en viens à mon problème: je ne comprend pas comment l'auteur configure passport.
fichier app.js, on trouve:
Code:
require('./authentication').init(app)
ensuite dans le module "authentication":
Code:
1 2 3 4
| module.exports = {
init: require('./init'),
middleware: require('./middleware')
} |
enfin, dans passport.js:
Code:
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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| const passport = require('passport')
const LocalStrategy = require('passport-local').Strategy
const authenticationMiddleware = require('./middleware')
const user = {
username: 'test-user',
password: 'test-password',
id: 1
}
function findUser (username, callback) {
if (username === user.username) {
console.log("utilisateur trouve");
return callback(null, user)
}
return callback(null)
}
passport.serializeUser(function (user, cb) {
cb(null, user.username)
})
passport.deserializeUser(function (username, cb) {
findUser(username, cb)
})
function initPassport () {
passport.use(new LocalStrategy(
function(username, password, done) {
findUser(username, function (err, user) {
if (err) {
return done(err)
}
if (!user) {
console.log("utilisateur introuvable");
return done(null, false)
}
if (password !== user.password ) {
console.log("mauvais psd");
return done(null, false)
}
console.log("c'est tout bon, on est logge");
return done(null, user)
})
}
))
passport.authenticationMiddleware = authenticationMiddleware
}
module.exports = initPassport |
Autrement dit, à aucun moment on ne passe la variable "passport" au module de conf de passport ci dessus.
A aucun moment on ne retourne ce passport au fichier principal de l'app.
Il semble qu'en le configurant à un endroit à part, le module "passport" soit dans le contexte global initialisé et configuré.
Quelqu'un peut m'expliquer pourquoi ?
PS:
instinctivement, moi j'aurai plutôt écrit une fonction qui prend en paramètre un "passport" puis le configure.
Voir, un module qui configure un passport puis l'expose avec export...
Merci d'avance :-)