var ensureLoggedin = require('connect-ensure-login').ensureLoggedIn;
var ldapescape = require("ldap-escape");
//var Fuse = require("fuse.js");
var ldap = require('ldapjs');
var client = ldap.createClient({ url: "ldap://frankiz.eleves.polytechnique.fr", timeout: 10000, idleTimeout: 10000});
// Pas nécessaire normalement car fait dans ldap_auth.js ; ici pour des besoins de debug
function handshake(uid, passwd) { client.bind("uid=${uid},ou=eleves,dc=frankiz,dc=net",passwd, (err) => { console.log(err); }); }
/**
* @summary Fonction qui retrouve les groupes où une personne est membre
* @arg {int} uid - Identifiant de la personne à interroger
* @arg {string} passwd - Mdp de la personne à interroger
* @return {string} Liste des uid de groupes où l'id fournie est membre (noms flat des groupes)
*/
function listGroups(uid) {
return new Promise(function(resolve, reject) {
var groupsList=[];
client.search("ou=groups,dc=frankiz,dc=net", {scope: "sub", attributes: "uid", filter: ldapescape.filter("(restrictedMemberUid=${id})", {id: uid})}, function(err, res) {
if (err) {
reject(err);
} else {
res.on('searchEntry', function(entry) { groupsList.push(entry.object.uid); });
res.on('end', function(res) { resolve(groupsList); });
}
});
});
}
// Synthaxe d'utilisation
handshake("user","xxx");
listGroups("user","xxx").then((grList) => { console.log(grList); });
/**
* @summary Fonction qui retrouve la liste des membres d'un binet
* @arg {int} uid - Identifiant de la personne interrogeant (pour des raisons d'identification)
* @arg {string} passwd - Mdp de la personne à interroger
* @return {string} Liste des uid de groupes où l'id fournie est membre (noms flat des groupes)
function listGroups(uid,passwd) {
client.bind("uid=${uid},ou=eleves,dc=frankiz,dc=net",passwd, (err) => { console.log(err); });
return new Promise(function(resolve, reject) {
var groupsList=[];
client.search("ou=groups,dc=frankiz,dc=net", {scope: "sub", attributes: "uid", filter: ldapescape.filter("(restrictedMemberUid=${id})", {id: uid})}, function(err, res) {
if (err) {
reject(err);
} else {
res.on('searchEntry', function(entry) { groupsList.push(entry.object.uid); });
res.on('end', function(res) { resolve(groupsList); });
}
});
});
}*/