Source: src/ldap/ldap_auth.js

/**
 * @file Ce fichier gère les authentifications avec le LDAP précisé dans config.json à l'aide de passport-ldapauth.
 * @author Wang
 */
import passport from 'passport';
import LdapStrategy from 'passport-ldapauth';
import session from 'express-session';
import fs from 'fs';
import path from 'path';

let configPath = path.resolve('./','ldap_config.json');
let config = JSON.parse(fs.readFileSync(configPath, 'utf8'));

passport.use(new LdapStrategy({
    server: {
        url: config.ldap.server,
        searchBase: config.ldap.searchBase,
        searchFilter: config.ldap.searchFilter
    }
}
));

function setupLdapAuth(server) {
    
    // Define new login strategy
    server.use(session({ 
        secret: config.sessionSecret,
        //store: a modifier avant de lancer en prod
        //voir les autres options
        resave: true,
        saveUninitialized: false
    }));
    server.use(passport.initialize());
    server.use(passport.session());

    passport.serializeUser(function(user, done) {
        done(null, user);
    });

    passport.deserializeUser(function(user, done) {
        done(null, user);
    });

    // Returns middleware that parses cookies
    //server.use(cookieParser());
}

export default setupLdapAuth;