Skip to content
Snippets Groups Projects
Commit 953d93cc authored by Guillaume WANG's avatar Guillaume WANG
Browse files

Merge branch 'master' of gitlab.binets.fr:br/sigma-backend

parents 1c9f6889 78c315c9
No related branches found
No related tags found
No related merge requests found
...@@ -4,41 +4,55 @@ var ldapescape = require("ldap-escape"); ...@@ -4,41 +4,55 @@ var ldapescape = require("ldap-escape");
var ldap = require('ldapjs'); 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 * @summary Fonction qui retrouve les groupes où une personne est membre
* @arg {int} person_id * @arg {int} uid - Identifiant de la personne à interroger
* @return {string} List of groups where the specified user is member * @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) { function listGroups(uid) {
return client.search("ou=groups,dc=frankiz,dc=net", { return new Promise(function(resolve, reject) {
scope: "one", var groupsList=[];
filter: ldapescape.filter("(|(memberUid=${id})(restrictedMemberUid={$id}))",{id: person_id}),
attributes: "uid", 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);
* @summary Fonction gestion erreur ; sûrement un truc malin à faire } else {
* @arg {Object} err - Code d'erreur res.on('searchEntry', function(entry) { groupsList.push(entry.object.uid); });
* @arg {Object} res - Résultat de la fonction res.on('end', function(res) { resolve(groupsList); });
*/ }
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());
}); });
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment