Skip to content
Snippets Groups Projects
Commit aa37fa10 authored by Quentin CHEVALIER's avatar Quentin CHEVALIER
Browse files

Anonymisation et config

parent ec95538c
No related branches found
No related tags found
No related merge requests found
...@@ -4,5 +4,13 @@ ...@@ -4,5 +4,13 @@
"searchBase": "ou=eleves,dc=frankiz,dc=net", "searchBase": "ou=eleves,dc=frankiz,dc=net",
"searchFilter": "(uid={{username}})" "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" "sessionSecret":"change this"
} }
\ No newline at end of file
...@@ -2,12 +2,15 @@ ...@@ -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. * @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 * @author hawkspar
*/ */
import {ldapescape} from 'ldap-escape';
import ldap from 'ldapjs';
import fs from 'fs';
var ensureLoggedin = require('connect-ensure-login').ensureLoggedIn; 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) * @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) { ...@@ -18,7 +21,7 @@ function listGroups(uid) {
return new Promise(function(resolve, reject) { return new Promise(function(resolve, reject) {
var groupsList=[]; 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) { if (err) {
reject(err); reject(err);
} else { } else {
...@@ -30,27 +33,25 @@ function listGroups(uid) { ...@@ -30,27 +33,25 @@ function listGroups(uid) {
} }
/** /**
* TBM
* @summary Fonction qui retrouve la liste des membres d'un binet sur le LDAP * @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) * @return {string} Liste des uid de groupes où l'id fournie est membre (noms flat des groupes)
*/ */
function listMembers(uid) { function listMembers(gid) {
client.bind("uid=${uid},ou=eleves,dc=frankiz,dc=net", (err) => { console.log(err); });
return new Promise(function(resolve, reject) { 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) { if (err) {
reject(err); reject(err);
} else { } else {
res.on('searchEntry', function(entry) { groupsList.push(entry.object.uid); }); res.on('searchEntry', function(entry) { membersList.push(entry.object.restrictedMemberUid); });
res.on('end', function(res) { resolve(groupsList); }); res.on('end', function(res) { resolve(membersList); });
} }
}); });
}); });
} }
// Synthaxe d'utilisation // Synthaxe d'utilisation
listGroups("quentin.chevalier","Ie42fds'eaJm1").then((grList) => { console.log(grList); }); listGroups("quentin.chevalier").then((grList) => { console.log(grList); });
\ No newline at end of file listMembers("faerix").then((meList) => { console.log(meList); });
\ No newline at end of file
/**
* @file Cree le serveur express avec tous les middleware qui vont bien
*/
import express from 'express'; import express from 'express';
import bodyParser from 'body-parser'; import bodyParser from 'body-parser';
import favicon from 'serve-favicon'; import favicon from 'serve-favicon';
...@@ -7,10 +10,6 @@ import ldap_auth from './ldap_auth/ldap_auth'; ...@@ -7,10 +10,6 @@ import ldap_auth from './ldap_auth/ldap_auth';
import schema from './graphql/schema'; import schema from './graphql/schema';
import { graphqlExpress, graphiqlExpress } from 'graphql-server-express'; import { graphqlExpress, graphiqlExpress } from 'graphql-server-express';
/**
* @file Cree le serveur express avec tous les middleware qui vont bien
*/
const server = express(); const server = express();
// on sait pas a quoi ca sert mais il parait que c'est utile // on sait pas a quoi ca sert mais il parait que c'est utile
......
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