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");
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
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