diff --git a/README.md b/README.md
index a246411d8cbbe74f08636de4456851d3eb336a63..d44d0c0be3f93feb14bc651f6ff752d8fdf5303c 100644
--- a/README.md
+++ b/README.md
@@ -89,3 +89,11 @@ qui fait appel au script `eslint src/` défini dans le [`package.json`](./packag
 Sinon, si vous utilisez Atom ou Visual Studio Code pour éditer votre code, il existe des plugins qui font tourner ESLint en _live_ sur le code et vérifient que tout est en ordre.
 
 Pour mieux comprendre ESLint, référez-vous à la [doc](https://eslint.org/docs/user-guide/getting-started).
+
+# Documentation
+
+La documentation est compilée avec JSDoc : le script pour le faire tourner est
+
+    npm run doc
+
+et les fichiers compilés se situent dans `doc/`.
\ No newline at end of file
diff --git a/doc/global.html b/doc/global.html
index 14073eac63dea41abfc6a20dd085273c9c502077..43251922c7ce2f77138a299b04e9264089ae4377 100644
--- a/doc/global.html
+++ b/doc/global.html
@@ -100,138 +100,6 @@
 
         
             
-
-    
-
-    
-    <h4 class="name" id="checkGroupAdmin"><span class="type-signature"></span>checkGroupAdmin<span class="signature">()</span><span class="type-signature"></span></h4>
-    
-
-    
-    <p class="summary"><p>console.log(client.search(&quot;ou=groups,dc=frankiz,dc=net&quot;, function(err, res) { return err; } ));
-    return client.search(&quot;ou=groups,dc=frankiz,dc=net&quot;, {
-        scope: &quot;one&quot;,
-        filter: ldapescape.filter(&quot;(|(memberUid=${id})(restrictedMemberUid={$id}))&quot;,{id: person_id}),
-        attributes: &quot;uid&quot;,
-    },
-    function(err, res) { return err;
-        if (err) {
-            reject(&quot;LDAP &quot;);
-        }
-        assert.ifError(err);</p>
-<pre class="prettyprint source"><code>    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);
-    });
-    res.on('end', function(result) {
-        console.log('status: ' + result.status);});
-});</code></pre><p>}</p>.</p>
-    
-
-
-
-<div class="description">
-    <p>console.log(client.search(&quot;ou=groups,dc=frankiz,dc=net&quot;, function(err, res) { return err; } ));
-    return client.search(&quot;ou=groups,dc=frankiz,dc=net&quot;, {
-        scope: &quot;one&quot;,
-        filter: ldapescape.filter(&quot;(|(memberUid=${id})(restrictedMemberUid={$id}))&quot;,{id: person_id}),
-        attributes: &quot;uid&quot;,
-    },
-    function(err, res) { return err;
-        if (err) {
-            reject(&quot;LDAP &quot;);
-        }
-        assert.ifError(err);</p>
-<pre class="prettyprint source"><code>    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);
-    });
-    res.on('end', function(result) {
-        console.log('status: ' + result.status);});
-});</code></pre><p>}</p>
-</div>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<dl class="details">
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-    <dt class="tag-source">Source:</dt>
-    <dd class="tag-source"><ul class="dummy"><li>
-        <a href="src_ldap_data.js.html">src/ldap_data.js</a>, <a href="src_ldap_data.js.html#line64">line 64</a>
-    </li></ul></dd>
-    
-
-    
-
-    
-
-    
-</dl>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        
-            
 
     
 
@@ -286,7 +154,7 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
-        <a href="src_index.js.html">src/index.js</a>, <a href="src_index.js.html#line55">line 55</a>
+        <a href="src_admin_view_admin_router.js.html">src/admin_view/admin_router.js</a>, <a href="src_admin_view_admin_router.js.html#line90">line 90</a>
     </li></ul></dd>
     
 
@@ -370,7 +238,7 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
-        <a href="src_index.js.html">src/index.js</a>, <a href="src_index.js.html#line65">line 65</a>
+        <a href="src_admin_view_admin_router.js.html">src/admin_view/admin_router.js</a>, <a href="src_admin_view_admin_router.js.html#line100">line 100</a>
     </li></ul></dd>
     
 
@@ -404,11 +272,11 @@
     
 
     
-    <h4 class="name" id="groupsUserIsMember"><span class="type-signature"></span>groupsUserIsMember<span class="signature">(person_id)</span><span class="type-signature"> &rarr; {string}</span></h4>
+    <h4 class="name" id="KnexAPI:Gettable"><span class="type-signature"></span>Knex API: Get table<span class="signature">(table_name)</span><span class="type-signature"></span></h4>
     
 
     
-    <p class="summary"><p>Fonction qui retrouve les groupes où une personne est membre</p></p>
+    <p class="summary"><p>Effectue une requête pour une table dans la BDD</p></p>
     
 
 
@@ -446,13 +314,13 @@
 
         <tr>
             
-                <td class="name"><code>person_id</code></td>
+                <td class="name"><code>table_name</code></td>
             
 
             <td class="type">
             
                 
-<span class="param-type">int</span>
+<span class="param-type">string</span>
 
 
             
@@ -462,7 +330,7 @@
 
             
 
-            <td class="description last"></td>
+            <td class="description last"><p>La table voulue par l'utilisateur.</p></td>
         </tr>
 
     
@@ -503,113 +371,7 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
-        <a href="src_ldap_data.js.html">src/ldap_data.js</a>, <a href="src_ldap_data.js.html#line14">line 14</a>
-    </li></ul></dd>
-    
-
-    
-
-    
-
-    
-</dl>
-
-
-
-
-
-
-
-
-
-
-
-
-
-<h5>Returns:</h5>
-
-        
-<div class="param-desc">
-    <p>Liste des groupes où l'id fournie est membre</p>
-</div>
-
-
-
-<dl>
-    <dt>
-        Type
-    </dt>
-    <dd>
-        
-<span class="param-type">string</span>
-
-
-    </dd>
-</dl>
-
-    
-
-
-
-
-
-        
-            
-
-    
-
-    
-    <h4 class="name" id="Home"><span class="type-signature"></span>Home<span class="signature">()</span><span class="type-signature"></span></h4>
-    
-
-    
-    <p class="summary"><p>Renvoie l'accueil du backend</p></p>
-    
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-<dl class="details">
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-
-    
-    <dt class="tag-source">Source:</dt>
-    <dd class="tag-source"><ul class="dummy"><li>
-        <a href="src_index.js.html">src/index.js</a>, <a href="src_index.js.html#line8">line 8</a>
+        <a href="src_admin_view_admin_router.js.html">src/admin_view/admin_router.js</a>, <a href="src_admin_view_admin_router.js.html#line59">line 59</a>
     </li></ul></dd>
     
 
@@ -643,11 +405,11 @@
     
 
     
-    <h4 class="name" id="KnexAPI:Gettable"><span class="type-signature"></span>Knex API: Get table<span class="signature">(table_name)</span><span class="type-signature"></span></h4>
+    <h4 class="name" id="listGroups"><span class="type-signature"></span>listGroups<span class="signature">(uid, passwd)</span><span class="type-signature"> &rarr; {string}</span></h4>
     
 
     
-    <p class="summary"><p>Effectue une requête pour une table dans la BDD</p></p>
+    <p class="summary"><p>Fonction qui retrouve les groupes où une personne est membre</p></p>
     
 
 
@@ -685,7 +447,30 @@
 
         <tr>
             
-                <td class="name"><code>table_name</code></td>
+                <td class="name"><code>uid</code></td>
+            
+
+            <td class="type">
+            
+                
+<span class="param-type">int</span>
+
+
+            
+            </td>
+
+            
+
+            
+
+            <td class="description last"><p>Identifiant de la personne à interroger</p></td>
+        </tr>
+
+    
+
+        <tr>
+            
+                <td class="name"><code>passwd</code></td>
             
 
             <td class="type">
@@ -701,7 +486,7 @@
 
             
 
-            <td class="description last"><p>La table voulue par l'utilisateur.</p></td>
+            <td class="description last"><p>Mdp de la personne à interroger</p></td>
         </tr>
 
     
@@ -742,7 +527,7 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
-        <a href="src_index.js.html">src/index.js</a>, <a href="src_index.js.html#line24">line 24</a>
+        <a href="src_ldap_data_ldap_data.js.html">src/ldap_data/ldap_data.js</a>, <a href="src_ldap_data_ldap_data.js.html#line18">line 18</a>
     </li></ul></dd>
     
 
@@ -765,6 +550,28 @@
 
 
 
+<h5>Returns:</h5>
+
+        
+<div class="param-desc">
+    <p>Liste des uid de groupes où l'id fournie est membre (noms flat des groupes)</p>
+</div>
+
+
+
+<dl>
+    <dt>
+        Type
+    </dt>
+    <dd>
+        
+<span class="param-type">string</span>
+
+
+    </dd>
+</dl>
+
+    
 
 
 
@@ -786,13 +593,13 @@
 </div>
 
 <nav>
-    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#checkGroupAdmin">checkGroupAdmin</a></li><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#groupsUserIsMember">groupsUserIsMember</a></li><li><a href="global.html#Home">Home</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li></ul>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
 </nav>
 
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue Feb 27 2018 17:44:33 GMT+0100 (Paris, Madrid)
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
 </footer>
 
 <script> prettyPrint(); </script>
diff --git a/doc/index.html b/doc/index.html
index 7be14afb648fb7068f6bc353b5600bc97f3bf2af..03bcf3efbd41c709555498980024ded53e2e8eba 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -140,6 +140,378 @@
     
 
     
+</article>
+
+</section>
+
+
+
+
+
+
+
+<section>
+
+<header>
+    
+        <h2>src/admin_view/admin_router.js</h2>
+        
+    
+</header>
+
+<article>
+    <div class="container-overview">
+    
+        
+            <div class="description"><p>admin_router</p></div>
+        
+
+        
+
+
+<dl class="details">
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+    <dt class="tag-source">Source:</dt>
+    <dd class="tag-source"><ul class="dummy"><li>
+        <a href="src_admin_view_admin_router.js.html">src/admin_view/admin_router.js</a>, <a href="src_admin_view_admin_router.js.html#line1">line 1</a>
+    </li></ul></dd>
+    
+
+    
+
+    
+
+    
+</dl>
+
+
+        
+    
+    </div>
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+</article>
+
+</section>
+
+
+
+
+
+
+
+<section>
+
+<header>
+    
+        <h2>src/index.js</h2>
+        
+    
+</header>
+
+<article>
+    <div class="container-overview">
+    
+        
+            <div class="description"><p>index</p></div>
+        
+
+        
+
+
+<dl class="details">
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+    <dt class="tag-source">Source:</dt>
+    <dd class="tag-source"><ul class="dummy"><li>
+        <a href="src_index.js.html">src/index.js</a>, <a href="src_index.js.html#line1">line 1</a>
+    </li></ul></dd>
+    
+
+    
+
+    
+
+    
+</dl>
+
+
+        
+    
+    </div>
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+</article>
+
+</section>
+
+
+
+
+
+
+
+<section>
+
+<header>
+    
+        <h2>src/ldap_auth/ldap_auth.js</h2>
+        
+    
+</header>
+
+<article>
+    <div class="container-overview">
+    
+        
+            <div class="description"><p>ldap_auth</p></div>
+        
+
+        
+
+
+<dl class="details">
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+    <dt class="tag-source">Source:</dt>
+    <dd class="tag-source"><ul class="dummy"><li>
+        <a href="src_ldap_auth_ldap_auth.js.html">src/ldap_auth/ldap_auth.js</a>, <a href="src_ldap_auth_ldap_auth.js.html#line1">line 1</a>
+    </li></ul></dd>
+    
+
+    
+
+    
+
+    
+</dl>
+
+
+        
+    
+    </div>
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+</article>
+
+</section>
+
+
+
+
+
+
+
+<section>
+
+<header>
+    
+        <h2>src/server.js</h2>
+        
+    
+</header>
+
+<article>
+    <div class="container-overview">
+    
+        
+            <div class="description"><p>server.js</p></div>
+        
+
+        
+
+
+<dl class="details">
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+    <dt class="tag-source">Source:</dt>
+    <dd class="tag-source"><ul class="dummy"><li>
+        <a href="src_server.js.html">src/server.js</a>, <a href="src_server.js.html#line11">line 11</a>
+    </li></ul></dd>
+    
+
+    
+
+    
+
+    
+</dl>
+
+
+        
+    
+    </div>
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
 </article>
 
 </section>
@@ -150,13 +522,13 @@
 </div>
 
 <nav>
-    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#checkGroupAdmin">checkGroupAdmin</a></li><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#groupsUserIsMember">groupsUserIsMember</a></li><li><a href="global.html#Home">Home</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li></ul>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
 </nav>
 
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue Feb 27 2018 17:44:33 GMT+0100 (Paris, Madrid)
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
 </footer>
 
 <script> prettyPrint(); </script>
diff --git a/doc/knexfile.js.html b/doc/knexfile.js.html
index 0135d5a254b36961c1f09187f15298e8e82b89b5..0d0bfe71cbbc9596c0a0928552f1d95ca4b438ba 100644
--- a/doc/knexfile.js.html
+++ b/doc/knexfile.js.html
@@ -65,13 +65,13 @@ module.exports = {
 </div>
 
 <nav>
-    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#checkGroupAdmin">checkGroupAdmin</a></li><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#groupsUserIsMember">groupsUserIsMember</a></li><li><a href="global.html#Home">Home</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li></ul>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
 </nav>
 
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue Feb 27 2018 17:44:33 GMT+0100 (Paris, Madrid)
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
 </footer>
 
 <script> prettyPrint(); </script>
diff --git a/doc/src_admin_view_admin_router.js.html b/doc/src_admin_view_admin_router.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..f77f1f05e2be05f2f28c2597ba0b577557c1936d
--- /dev/null
+++ b/doc/src_admin_view_admin_router.js.html
@@ -0,0 +1,167 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>JSDoc: Source: src/admin_view/admin_router.js</title>
+
+    <script src="scripts/prettify/prettify.js"> </script>
+    <script src="scripts/prettify/lang-css.js"> </script>
+    <!--[if lt IE 9]>
+      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
+    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
+</head>
+
+<body>
+
+<div id="main">
+
+    <h1 class="page-title">Source: src/admin_view/admin_router.js</h1>
+
+    
+
+
+
+    
+    <section>
+        <article>
+            <pre class="prettyprint source linenums"><code>/**
+ * @file admin_router
+ * @summary Interface "administrateur" de l'acces aux BDD
+ */
+
+import express from 'express';
+import knex from '../../db/knex_router';
+import passport from 'passport';
+
+const router = express.Router();
+
+let port = process.env.PORT || 3000;
+
+router.get('/', function (req, res) {
+    console.log('Connecting to ' + req.url);
+    res.render('login', { title: 'Login', port: port });
+});
+
+router.get('/admin', function (req, res) {
+    console.log('Connecting to ' + req.url);
+    res.render('home', { title: 'Home', port: port });
+});
+
+router.post('/loginAttempt'
+    , passport.authenticate('ldapauth', {
+        //successRedirect: '/admin',
+        failureRedirect: '/',
+        //failureFlash: true
+        //failureFlas: 'Invalid username or password.' //TODO: test this. ce message s'affiche-t-il tout seul ou faut-il aller le chercher quand on genere login.pug?
+    })
+    // on a commente les deux lignes dessus et on a besoin de faire un callback apres le passport.authenticate car
+    // on souhaite garde l'information user.dn et body.password qq part.
+    // TODO: essayer de garder ces informations plus proprement...
+    , function (req, res) {
+        req.session.dn = req.user.dn;
+        req.session.password = req.body.password;
+
+        if (req.session.returnTo !== undefined) {
+            res.redirect(req.session.returnTo); //TODO: &lt;- euh ok ca marche mais c'est quoi ca?
+        } else {
+            res.redirect("/admin");
+        }
+    }
+
+);
+
+router.get('/logout', function (req, res) {
+    req.logout();
+    res.redirect('/');
+});
+
+router.get('/db?', function (req, res) {
+    let table_name = req.query.table;
+    let columns = req.query.columns;
+
+    res.redirect(`db/${table_name}?columns=${columns}`);
+});
+
+/**
+ * @function Knex API: Get table
+ * @summary Effectue une requête pour une table dans la BDD
+ * @argument {string} table_name - La table voulue par l'utilisateur.
+ */
+router.get('/db/:table_name?', function (req, res) {
+
+    // get columns from query
+    let columns;
+    if (req.query.columns) {
+        columns = req.query.columns.split(',');
+    } else {
+        columns = null;
+    }
+    console.log(columns);
+
+    knex.select(columns).from(req.params.table_name).then(function (table) {
+        res.setHeader("Content-Type", "application/json");
+        res.write(JSON.stringify(table, null, 2));
+        res.end();
+    }, function () {
+        res.status(400);
+        res.render('error', {
+            status: res.statusCode,
+            error_message: "Bad request: can't find table " + req.params.table_name
+        });
+        res.end();
+    }
+    );
+});
+
+/**
+ * @function Error 404 catcher
+ * @summary Catche les requêtes en dehors des URL acceptées
+ */
+router.use((req, res, next) => {
+    let err = new Error('Not found');
+    err.status = 404;
+    next(err);
+});
+
+/**
+ * @function Error 404 handler
+ * @summary Gère les erreurs 404
+ */
+
+router.use((err, req, res, next) => {
+    res.locals.message = err.message;
+
+    res.status(err.status || 500);
+    let error_message = res.statusCode == 404 ? 'Not found.' : 'Internal server error.';
+    res.render('error', {
+        status: res.statusCode,
+        error_message: error_message
+    });
+});
+
+export default router;
+</code></pre>
+        </article>
+    </section>
+
+
+
+
+</div>
+
+<nav>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
+</nav>
+
+<br class="clear">
+
+<footer>
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
+</footer>
+
+<script> prettyPrint(); </script>
+<script src="scripts/linenumber.js"> </script>
+</body>
+</html>
diff --git a/doc/src_index.js.html b/doc/src_index.js.html
index cdbc1780dc6f2832dc197743e60fd4d78344b313..8b3fa9c2a8e095d505d338392eaf61c67dc88177 100644
--- a/doc/src_index.js.html
+++ b/doc/src_index.js.html
@@ -26,90 +26,32 @@
     
     <section>
         <article>
-            <pre class="prettyprint source linenums"><code>import server from './server';
+            <pre class="prettyprint source linenums"><code>/**
+ * @file index
+ * @summary Entry point de webpack. Finit de setup le server avec ./ldap_auth et ./admin_view
+ */
+
+import server from './server';
 import colors from 'colors';
+
 import { graphqlExpress, graphiqlExpress } from 'graphql-server-express';
 import makeExecutableSchema from 'graphql-tools';
-import knex from '../db/knex_router';
-import path from 'path';
 
-/**
- * @function Home
- * @summary Renvoie l'accueil du backend
- */
-server.get('/', function(req, res) {
-    console.log('Connecting to '+req.url);
-    res.render('home', {title: 'Home', port: port});
-});
+import setupLdapAuth from './ldap_auth/ldap_auth';
+import router from './admin_view/admin_router';
 
-server.get('/db?', function(req, res) {
-    let table_name = req.query.table;
-    let columns = req.query.columns;
+// setting up ldap authentication
+setupLdapAuth(server);
 
-    res.redirect(`db/${table_name}?columns=${columns}`);
-});
+// setting up l'interface admin des BDD
+server.use(router);
 
-/**
- * @function Knex API: Get table
- * @summary Effectue une requête pour une table dans la BDD
- * @argument {string} table_name - La table voulue par l'utilisateur.
- */
-server.get('/db/:table_name?', function(req, res) {
-
-    // get columns from query
-    let columns;
-    if (req.query.columns) {
-        columns = req.query.columns.split(',');
-    } else {
-        columns = null;
-    }
-    console.log(columns);
-    
-    knex.select(columns).from(req.params.table_name).then(function(table) {
-        res.setHeader("Content-Type", "application/json");
-        res.write(JSON.stringify(table,null,2));
-        res.end();
-    },function() {
-        res.status(400);
-        res.render('error', {
-            status: res.statusCode,
-            error_message: "Bad request: can't find table " + req.params.table_name
-        });
-        res.end();
-    }
-    );
-});
+let port = process.env.PORT || 3000;
 
-/**
- * @function Error 404 catcher
- * @summary Catche les requêtes en dehors des URL acceptées
- */
-server.use((req, res, next) => {
-    let err = new Error('Not found');
-    err.status = 404;
-    next(err);
-});
-
-/**
- * @function Error 404 handler
- * @summary Gère les erreurs 404
- */
-
-server.use((err, req, res, next) => {
-    res.locals.message = err.message;
-
-    res.status(err.status || 500);
-    let error_message = res.statusCode == 404 ? 'Not found.' : 'Internal server error.';
-    res.render('error', {
-        status: res.statusCode,
-        error_message: error_message
-    });
+server.listen(port, () => {
+    console.log(colors.blue(`Express server listening on port ${port}`));
 });
-
-// define port server is to listen on
-const port = process.env.PORT || 3000;
-
-server.listen(port, () => console.log(colors.blue('Express server running on port', port)));</code></pre>
+</code></pre>
         </article>
     </section>
 
@@ -119,13 +61,13 @@ server.listen(port, () => console.log(colors.blue('Express server running on por
 </div>
 
 <nav>
-    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#checkGroupAdmin">checkGroupAdmin</a></li><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#groupsUserIsMember">groupsUserIsMember</a></li><li><a href="global.html#Home">Home</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li></ul>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
 </nav>
 
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Tue Feb 27 2018 17:44:33 GMT+0100 (Paris, Madrid)
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
 </footer>
 
 <script> prettyPrint(); </script>
diff --git a/doc/src_ldap_auth_ldap_auth.js.html b/doc/src_ldap_auth_ldap_auth.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..cac77e4e9d5a5550d1bb8b6f4b813d6fd25ee220
--- /dev/null
+++ b/doc/src_ldap_auth_ldap_auth.js.html
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>JSDoc: Source: src/ldap_auth/ldap_auth.js</title>
+
+    <script src="scripts/prettify/prettify.js"> </script>
+    <script src="scripts/prettify/lang-css.js"> </script>
+    <!--[if lt IE 9]>
+      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
+    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
+</head>
+
+<body>
+
+<div id="main">
+
+    <h1 class="page-title">Source: src/ldap_auth/ldap_auth.js</h1>
+
+    
+
+
+
+    
+    <section>
+        <article>
+            <pre class="prettyprint source linenums"><code>/**
+ * @file ldap_auth
+ * @summary Configuration de l'authentification LDAP du backend via passport-ldap
+ */
+import passport from 'passport';
+import LdapStrategy from 'passport-ldapauth';
+import session from 'express-session';
+import fs from 'fs';
+
+function setupLdapAuth(server) {
+    var config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
+    
+    passport.use(new LdapStrategy({
+        server: {
+            url: config.ldap.server,
+            searchBase: config.ldap.searchBase,
+            searchFilter: config.ldap.searchFilter
+        }
+    }));
+
+    server.use(session({ 
+        secret: config.sessionSecret,
+        //store: a modifier avant de lancer en prod
+        //voir les autres options
+        resave: true,
+        saveUninitialized: false
+    }));
+    server.use(passport.initialize());
+    server.use(passport.session());
+
+    passport.serializeUser(function(user, done) {
+        done(null, user);
+    });
+
+    passport.deserializeUser(function(user, done) {
+        done(null, user);
+    });
+
+    // Returns middleware that parses cookies
+    //server.use(cookieParser());
+}
+
+export default setupLdapAuth;
+</code></pre>
+        </article>
+    </section>
+
+
+
+
+</div>
+
+<nav>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
+</nav>
+
+<br class="clear">
+
+<footer>
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
+</footer>
+
+<script> prettyPrint(); </script>
+<script src="scripts/linenumber.js"> </script>
+</body>
+</html>
diff --git a/doc/src_ldap_data_ldap_data.js.html b/doc/src_ldap_data_ldap_data.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..50e650bf07bc7a35b958d827df46e09f7aef4603
--- /dev/null
+++ b/doc/src_ldap_data_ldap_data.js.html
@@ -0,0 +1,108 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>JSDoc: Source: src/ldap_data/ldap_data.js</title>
+
+    <script src="scripts/prettify/prettify.js"> </script>
+    <script src="scripts/prettify/lang-css.js"> </script>
+    <!--[if lt IE 9]>
+      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
+    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
+</head>
+
+<body>
+
+<div id="main">
+
+    <h1 class="page-title">Source: src/ldap_data/ldap_data.js</h1>
+
+    
+
+
+
+    
+    <section>
+        <article>
+            <pre class="prettyprint source linenums"><code>var ensureLoggedin =  require('connect-ensure-login').ensureLoggedIn;
+var ldapescape = require("ldap-escape");
+//var Fuse = require("fuse.js");
+
+var ldap = require('ldapjs');
+
+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 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 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); });
+            }
+        });
+    });
+}
+
+// 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); });
+            }
+        });
+    });
+}*/</code></pre>
+        </article>
+    </section>
+
+
+
+
+</div>
+
+<nav>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
+</nav>
+
+<br class="clear">
+
+<footer>
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
+</footer>
+
+<script> prettyPrint(); </script>
+<script src="scripts/linenumber.js"> </script>
+</body>
+</html>
diff --git a/doc/src_server.js.html b/doc/src_server.js.html
new file mode 100644
index 0000000000000000000000000000000000000000..c328fb688dc29e7822dac03ba8cfd44c1be1b2ce
--- /dev/null
+++ b/doc/src_server.js.html
@@ -0,0 +1,121 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <title>JSDoc: Source: src/server.js</title>
+
+    <script src="scripts/prettify/prettify.js"> </script>
+    <script src="scripts/prettify/lang-css.js"> </script>
+    <!--[if lt IE 9]>
+      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+    <![endif]-->
+    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
+    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
+</head>
+
+<body>
+
+<div id="main">
+
+    <h1 class="page-title">Source: src/server.js</h1>
+
+    
+
+
+
+    
+    <section>
+        <article>
+            <pre class="prettyprint source linenums"><code>import express from 'express';
+import bodyParser from 'body-parser';
+import favicon from 'serve-favicon';
+import morgan from 'morgan';
+import knex from '../db/knex_router';
+import path from 'path';
+import ldap_auth from './ldap_auth/ldap_auth';
+import { graphqlExpress, graphiqlExpress } from 'graphql-server-express';
+import { makeExecutableSchema } from 'graphql-tools';
+
+/** 
+ * @file server.js
+ * @summary 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
+server.use(bodyParser.json());
+server.use(bodyParser.urlencoded({
+    extended: false
+}));
+
+// setting up view engine for pug
+let viewpath = path.resolve('./','src','views');
+console.log(viewpath);
+server.set('views', viewpath);
+server.set('view engine', 'pug');
+
+// favicon: capital sigma symbol
+server.use(favicon(path.resolve('./','assets','favicon.ico')));
+
+// Morgan is middleware for logging requests
+server.use(morgan('dev'));
+
+// setting up ldap authentication
+ldap_auth(server);
+
+const typeDefs = `
+    type Query {
+        groups: [Group]
+    }
+
+    type Group {
+        name: String!
+        id: ID!
+        updatedAt: String!
+        description: String
+        school: String!
+    }
+`;
+
+const resolvers = {
+    Query: {
+        groups: () => knex.select().from('groups')
+    }
+};
+
+const schema = makeExecutableSchema({
+    typeDefs,
+    resolvers
+});
+
+server.use('/graphql', bodyParser.json(), graphqlExpress({schema}));
+
+server.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql'}));
+
+
+export default server;
+</code></pre>
+        </article>
+    </section>
+
+
+
+
+</div>
+
+<nav>
+    <h2><a href="index.html">Home</a></h2><h3>Global</h3><ul><li><a href="global.html#Error404catcher">Error 404 catcher</a></li><li><a href="global.html#Error404handler">Error 404 handler</a></li><li><a href="global.html#KnexAPI:Gettable">Knex API: Get table</a></li><li><a href="global.html#listGroups">listGroups</a></li></ul>
+</nav>
+
+<br class="clear">
+
+<footer>
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:35:38 GMT+0100 (Romance Standard Time)
+</footer>
+
+<script> prettyPrint(); </script>
+<script src="scripts/linenumber.js"> </script>
+</body>
+</html>
diff --git a/package.json b/package.json
index df8de31d7125f3fe990b9bf419c483e24e4953e3..fa80fd21ee2b75c70a1e49c2df9bc804d1a76655 100644
--- a/package.json
+++ b/package.json
@@ -41,6 +41,7 @@
     "lint": "eslint src/",
     "build": "webpack",
     "watch": "webpack --watch",
+    "doc": "jsdoc -c configfile_doc.json",
     "test": "nodemon --watch build build/bundle.js"
   },
   "repository": {
diff --git a/src/index.js b/src/index.js
index 6b75c435c6a2efd7db0b26a439a5f213cfb924da..41857f62ac579320c2d70f25a8d5037e34365d40 100644
--- a/src/index.js
+++ b/src/index.js
@@ -16,7 +16,7 @@ import router from './admin_view/admin_router';
 setupLdapAuth(server);
 
 // setting up l'interface admin des BDD
-server.use('/', router);
+server.use(router);
 
 let port = process.env.PORT || 3000;
 
diff --git a/src/views/login.pug b/src/views/login.pug
index 9fdad445cf9468d45c96384b3fa602fd01c316a7..18abbff1ba0bd8030f074582611646d221c91001 100644
--- a/src/views/login.pug
+++ b/src/views/login.pug
@@ -6,9 +6,9 @@ block content
     p Vous devez vous connecter pour acceder aux BDD ("interface admin").
     form(action="/loginAttempt", method="post")
         div.form-group
-            label(for="username") Identifiant Frankiz
-            input.form-control(type="text", placeholder="Identifiant Frankiz", name="username")
+            label(for="username") Frankiz ID
+            input.form-control(type="text", placeholder="User", name="username")
         div.form-group
-            label(for="password") Mot de passe
-            input.form-control(type="password", placeholder="Mot de passe", name="password")
-        button.form-control(type="submit") Se connecter
+            label(for="password") Password
+            input.form-control(type="password", placeholder="Password", name="password")
+        button.form-control(type="submit") Log in