diff --git a/src/ldap_data/ldap_data.js b/src/ldap_data/ldap_data.js index f0c194e6ed657c9f3f0967a4f9d03bef38e2b730..1a0303c245efae2356aa05870cfb764dead06d40 100644 --- a/src/ldap_data/ldap_data.js +++ b/src/ldap_data/ldap_data.js @@ -4,41 +4,55 @@ var ldapescape = require("ldap-escape"); var ldap = require('ldapjs'); -var client = ldap.createClient({ url: "ldap://frankiz", timeout: 10000, idleTimeout: 10000}); +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 Key function ; interrogates LDAP to get list of groups the person's in - * @arg {int} person_id - * @return {string} List of groups where the specified user is member + * @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 groupsUserIsMember(person_id) { - return client.search("ou=groups,dc=frankiz,dc=net", { - scope: "one", - filter: ldapescape.filter("(|(memberUid=${id})(restrictedMemberUid={$id}))",{id: person_id}), - attributes: "uid", - }, - /** - * @summary Fonction gestion erreur ; sûrement un truc malin à faire - * @arg {Object} err - Code d'erreur - * @arg {Object} res - Résultat de la fonction - */ - function(err, res) { return err; - /** - if (err) { - reject("LDAP "); - } - assert.ifError(err); - - res.on('searchEntry', function(entry) { - console.log('entry: ' + JSON.stringify(entry.object)); - }); - res.on('searchReference', function(referral) { - console.log('referral: ' + referral.uris.join()); +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); }); + } }); - res.on('error', function(err) { - console.error('error: ' + err.message); + }); +} + +// 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); }); + } }); - res.on('end', function(result) { - console.log('status: ' + result.status);}); */ }); -} \ No newline at end of file +}*/ \ No newline at end of file