EvalueTonSavoir/server/auth/modules/passportjs.js

64 lines
2.1 KiB
JavaScript
Raw Normal View History

2024-09-28 17:08:11 -04:00
const fs = require('fs');
var passport = require('passport')
2024-09-30 23:05:00 -04:00
var authprovider = require('../../models/authProvider')
2024-09-28 17:08:11 -04:00
class PassportJs{
constructor(authmanager,settings){
this.authmanager = authmanager
this.registeredProviders = {}
this.providers = settings
this.endpoint = "/api/auth"
}
2024-09-30 23:05:00 -04:00
async registerAuth(expressapp){
2024-09-28 17:08:11 -04:00
expressapp.use(passport.initialize());
expressapp.use(passport.session());
2024-09-30 23:05:00 -04:00
2024-09-28 17:08:11 -04:00
for(const p of this.providers){
for(const [name,provider] of Object.entries(p)){
const auth_id = `passportjs_${provider.type}_${name}`
2024-09-28 17:08:11 -04:00
if(!(provider.type in this.registeredProviders)){
this.registerProvider(provider.type,auth_id)
2024-09-28 17:08:11 -04:00
}
try{
this.registeredProviders[provider.type].register(expressapp,passport,this.endpoint,name,provider)
2024-09-30 23:05:00 -04:00
authprovider.create(auth_id)
2024-09-28 17:08:11 -04:00
} catch(error){
console.error(`La connexion ${name} de type ${provider.type} n'as pu être chargé.`)
}
}
}
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(user, done) {
done(null, user);
});
}
async registerProvider(providerType,auth_id){
2024-09-28 17:08:11 -04:00
try{
const providerPath = `${process.cwd()}/auth/modules/passport-providers/${providerType}.js`
const Provider = require(providerPath);
this.registeredProviders[providerType]= new Provider(this,auth_id)
2024-09-28 17:08:11 -04:00
console.info(`Le type de connexion '${providerType}' a été ajouté dans passportjs.`)
} catch(error){
console.error(`Le type de connexion '${providerType}' n'as pas pu être chargé dans passportjs.`)
}
}
2024-09-30 23:05:00 -04:00
register(userinfos){
2024-10-01 11:37:07 -04:00
return this.authmanager.register(userinfos)
2024-09-30 23:05:00 -04:00
}
authenticate(userinfos){
2024-10-01 11:37:07 -04:00
return this.authmanager.login(userinfos)
2024-09-30 23:05:00 -04:00
}
2024-09-28 17:08:11 -04:00
}
module.exports = PassportJs;