From aa37fa1022b7ad94ee86f5b11b7744ba2db5a01f Mon Sep 17 00:00:00 2001 From: Quentin CHEVALIER <quentin.chevalier@polytechnique.edu> Date: Wed, 28 Feb 2018 12:20:11 +0100 Subject: [PATCH] Anonymisation et config --- config.json | 8 ++++++++ src/ldap/ldap_data.js | 29 +++++++++++++++-------------- src/server.js | 7 +++---- 3 files changed, 26 insertions(+), 18 deletions(-) diff --git a/config.json b/config.json index 3dd69ae..788fdac 100644 --- a/config.json +++ b/config.json @@ -4,5 +4,13 @@ "searchBase": "ou=eleves,dc=frankiz,dc=net", "searchFilter": "(uid={{username}})" }, + "ldap_data_gl": { + "searchBase": "ou=groups,dc=frankiz,dc=net", + "searchFilter":"(restrictedMemberUid=${id})" + }, + "ldap_data_ml": { + "searchBase": "ou=groups,dc=frankiz,dc=net", + "searchFilter": "(uid=${id})" + }, "sessionSecret":"change this" } \ No newline at end of file diff --git a/src/ldap/ldap_data.js b/src/ldap/ldap_data.js index 67abdc3..2bd475c 100644 --- a/src/ldap/ldap_data.js +++ b/src/ldap/ldap_data.js @@ -2,12 +2,15 @@ * @file Ce fichier gère les requêtes LDAP de type données ; liste des groupe d'un individu, liste des membres d'un groupe... A ne pas confondre avec ldap_auth qui lui gère l'authentification. * @author hawkspar */ +import {ldapescape} from 'ldap-escape'; +import ldap from 'ldapjs'; +import fs from 'fs'; var ensureLoggedin = require('connect-ensure-login').ensureLoggedIn; -var ldapescape = require("ldap-escape"); -var ldap = require('ldapjs'); -var client = ldap.createClient({ url: "ldap://frankiz.eleves.polytechnique.fr", timeout: 10000, idleTimeout: 10000}); +let config = JSON.parse(fs.readFileSync('config.json', 'utf8')); + +var client = ldap.createClient({ url: config.ldap.server, timeout: 10000, idleTimeout: 10000}); /** * @summary Fonction qui retrouve les groupes du LDAP dont un individu est membre (pas de bind nécessaire) @@ -18,7 +21,7 @@ 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) { + client.search(config.ldap_data_gl.searchBase, {scope: "sub", attributes: "uid", filter: ldapescape.filter(config.ldap_data_gl.searchFilter, {id: uid})}, function(err, res) { if (err) { reject(err); } else { @@ -30,27 +33,25 @@ function listGroups(uid) { } /** - * TBM * @summary Fonction qui retrouve la liste des membres d'un binet sur le LDAP - * @arg {int} uid - Identifiant du groupe à interrogeant (pour des raisons d'identification) + * @arg {int} gid - Identifiant du groupe à interroger * @return {string} Liste des uid de groupes où l'id fournie est membre (noms flat des groupes) */ -function listMembers(uid) { - client.bind("uid=${uid},ou=eleves,dc=frankiz,dc=net", (err) => { console.log(err); }); - +function listMembers(gid) { return new Promise(function(resolve, reject) { - var groupsList=[]; + var membersList=[]; - client.search("ou=groups,dc=frankiz,dc=net", {scope: "sub", attributes: "uid", filter: ldapescape.filter("(restrictedMemberUid=${id})", {id: uid})}, function(err, res) { + client.search(config.ldap_data_ml.searchBase, {scope: "sub", attributes: "uid", filter: ldapescape.filter(config.ldap_data_ml.searchFilter, {id: gid})}, 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('searchEntry', function(entry) { membersList.push(entry.object.restrictedMemberUid); }); + res.on('end', function(res) { resolve(membersList); }); } }); }); } // Synthaxe d'utilisation -listGroups("quentin.chevalier","Ie42fds'eaJm1").then((grList) => { console.log(grList); }); \ No newline at end of file +listGroups("quentin.chevalier").then((grList) => { console.log(grList); }); +listMembers("faerix").then((meList) => { console.log(meList); }); \ No newline at end of file diff --git a/src/server.js b/src/server.js index 1a1e371..ed02067 100644 --- a/src/server.js +++ b/src/server.js @@ -1,3 +1,6 @@ +/** + * @file Cree le serveur express avec tous les middleware qui vont bien +*/ import express from 'express'; import bodyParser from 'body-parser'; import favicon from 'serve-favicon'; @@ -7,10 +10,6 @@ import ldap_auth from './ldap_auth/ldap_auth'; import schema from './graphql/schema'; import { graphqlExpress, graphiqlExpress } from 'graphql-server-express'; -/** - * @file Cree le serveur express avec tous les middleware qui vont bien -*/ - const server = express(); // on sait pas a quoi ca sert mais il parait que c'est utile -- GitLab