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 57fe512677587d0b5f6edbfc8802152a276125e7..4b1b95742b42471eb70bc9c91e23a4daba540c67 100644
--- a/doc/global.html
+++ b/doc/global.html
@@ -105,6 +105,7 @@
 
     
     <h4 class="name" id="Error404catcher"><span class="type-signature"></span>Error 404 catcher<span class="signature">()</span><span class="type-signature"></span></h4>
+<<<<<<< HEAD
     
 
     
@@ -189,6 +190,8 @@
 
     
     <h4 class="name" id="Error404handler"><span class="type-signature"></span>Error 404 handler<span class="signature">()</span><span class="type-signature"></span></h4>
+=======
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     
 
     
@@ -238,7 +241,11 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
+<<<<<<< HEAD
         <a href="src_admin_view_admin_view.js.html">src/admin_view/admin_view.js</a>, <a href="src_admin_view_admin_view.js.html#line66">line 66</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     </li></ul></dd>
     
 
@@ -371,7 +378,11 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
+<<<<<<< HEAD
         <a href="src_admin_view_admin_view.js.html">src/admin_view/admin_view.js</a>, <a href="src_admin_view_admin_view.js.html#line25">line 25</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     </li></ul></dd>
     
 
@@ -405,11 +416,19 @@
     
 
     
+<<<<<<< HEAD
     <h4 class="name" id="listGroups"><span class="type-signature"></span>listGroups<span class="signature">(uid)</span><span class="type-signature"> &rarr; {string}</span></h4>
     
 
     
     <p class="summary"><p>Fonction qui retrouve les groupes du LDAP dont un individu est membre (pas de bind nécessaire)</p></p>
+=======
+    <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>Effectue une requête pour une table dans la BDD</p></p>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     
 
 
@@ -447,13 +466,17 @@
 
         <tr>
             
+<<<<<<< HEAD
                 <td class="name"><code>uid</code></td>
+=======
+                <td class="name"><code>table_name</code></td>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
             
 
             <td class="type">
             
                 
-<span class="param-type">int</span>
+<span class="param-type">string</span>
 
 
             
@@ -463,7 +486,11 @@
 
             
 
+<<<<<<< HEAD
             <td class="description last"><p>Identifiant de l'individu à interroger</p></td>
+=======
+            <td class="description last"><p>La table voulue par l'utilisateur.</p></td>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
         </tr>
 
     
@@ -504,7 +531,11 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
+<<<<<<< HEAD
         <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#line17">line 17</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     </li></ul></dd>
     
 
@@ -527,6 +558,7 @@
 
 
 
+<<<<<<< HEAD
 <h5>Returns:</h5>
 
         
@@ -549,6 +581,8 @@
 </dl>
 
     
+=======
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 
 
 
@@ -560,6 +594,7 @@
     
 
     
+<<<<<<< HEAD
     <h4 class="name" id="listMembers"><span class="type-signature"></span>listMembers<span class="signature">(uid)</span><span class="type-signature"> &rarr; {string}</span></h4>
     
 
@@ -572,6 +607,16 @@
 <div class="description">
     <p>TBM</p>
 </div>
+=======
+    <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>Fonction qui retrouve les groupes où une personne est membre</p></p>
+    
+
+
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 
 
 
@@ -607,6 +652,32 @@
         <tr>
             
                 <td class="name"><code>uid</code></td>
+<<<<<<< HEAD
+=======
+            
+
+            <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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
             
 
             <td class="type">
@@ -622,7 +693,11 @@
 
             
 
+<<<<<<< HEAD
             <td class="description last"><p>Identifiant du groupe à interrogeant (pour des raisons d'identification)</p></td>
+=======
+            <td class="description last"><p>Mdp de la personne à interroger</p></td>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
         </tr>
 
     
@@ -663,7 +738,11 @@
     
     <dt class="tag-source">Source:</dt>
     <dd class="tag-source"><ul class="dummy"><li>
+<<<<<<< HEAD
         <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#line38">line 38</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     </li></ul></dd>
     
 
@@ -729,13 +808,21 @@
 </div>
 
 <nav>
+<<<<<<< HEAD
     <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><li><a href="global.html#listMembers">listMembers</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </nav>
 
 <br class="clear">
 
 <footer>
+<<<<<<< HEAD
     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:49:00 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)
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </footer>
 
 <script> prettyPrint(); </script>
diff --git a/doc/index.html b/doc/index.html
index 8420669988005b6e53eafdd9ea66f22c7952d45d..a0b56f1b1d87fcbfe0966dec67b40675a36d94f4 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -476,6 +476,378 @@
     
 
     
+
+    
+
+    
+
+    
+    <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>
+
+
+
+
+
+
+
+<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">
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
+
+    
 
     
 
@@ -529,13 +901,21 @@
 </div>
 
 <nav>
+<<<<<<< HEAD
     <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><li><a href="global.html#listMembers">listMembers</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </nav>
 
 <br class="clear">
 
 <footer>
+<<<<<<< HEAD
     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:49:00 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)
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </footer>
 
 <script> prettyPrint(); </script>
diff --git a/doc/knexfile.js.html b/doc/knexfile.js.html
index 19b4ce3c5a234b2a945b152cedae24e2da7f7404..c6b5c709a534d8ed8226717b8872956e5bb8e482 100644
--- a/doc/knexfile.js.html
+++ b/doc/knexfile.js.html
@@ -66,13 +66,21 @@ module.exports = {
 </div>
 
 <nav>
+<<<<<<< HEAD
     <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><li><a href="global.html#listMembers">listMembers</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </nav>
 
 <br class="clear">
 
 <footer>
+<<<<<<< HEAD
     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:49:00 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)
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </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 ff646b9daa10fbca54d2b2d8b65f98e7df003c15..71c3ca431ca95e2bf5fcf5eb99a8254a2b3264cd 100644
--- a/doc/src_index.js.html
+++ b/doc/src_index.js.html
@@ -26,6 +26,7 @@
     
     <section>
         <article>
+<<<<<<< HEAD
             <pre class="prettyprint source linenums"><code>import server from './server';
 import router from './admin_view/admin_view';
 import colors from 'colors';
@@ -43,6 +44,34 @@ let port = process.env.PORT || 3000;
 server.listen(port, () => {
     console.log(colors.blue(`Express server listening on port ${port}`));
 });</code></pre>
+=======
+            <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 setupLdapAuth from './ldap_auth/ldap_auth';
+import router from './admin_view/admin_router';
+
+// setting up ldap authentication
+setupLdapAuth(server);
+
+// setting up l'interface admin des BDD
+server.use(router);
+
+let port = process.env.PORT || 3000;
+
+server.listen(port, () => {
+    console.log(colors.blue(`Express server listening on port ${port}`));
+});
+</code></pre>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
         </article>
     </section>
 
@@ -52,13 +81,21 @@ server.listen(port, () => {
 </div>
 
 <nav>
+<<<<<<< HEAD
     <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><li><a href="global.html#listMembers">listMembers</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </nav>
 
 <br class="clear">
 
 <footer>
+<<<<<<< HEAD
     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:49:00 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)
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </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
index 068b3770aa09d86ac54cf087b08fef0362643185..f8f20db35b7100f060fb37d32316830c57f01d0b 100644
--- a/doc/src_ldap_data_ldap_data.js.html
+++ b/doc/src_ldap_data_ldap_data.js.html
@@ -26,6 +26,7 @@
     
     <section>
         <article>
+<<<<<<< HEAD
             <pre class="prettyprint source linenums"><code>/**
  * @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
@@ -33,14 +34,31 @@
 
 var ensureLoggedin =  require('connect-ensure-login').ensureLoggedIn;
 var ldapescape = require("ldap-escape");
+=======
+            <pre class="prettyprint source linenums"><code>var ensureLoggedin =  require('connect-ensure-login').ensureLoggedIn;
+var ldapescape = require("ldap-escape");
+//var Fuse = require("fuse.js");
+
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 var ldap = require('ldapjs');
 
 var client = ldap.createClient({ url: "ldap://frankiz.eleves.polytechnique.fr", timeout: 10000, idleTimeout: 10000});
 
+<<<<<<< HEAD
 /**
  * @summary Fonction qui retrouve les groupes du LDAP dont un individu est membre (pas de bind nécessaire)
  * @arg {int} uid - Identifiant de l'individu à interroger
  * @return {string} Liste des uid de groupes (noms flat des groupes) où l'id fourni
+=======
+// 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)
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
  */
 function listGroups(uid) {
     return new Promise(function(resolve, reject) {
@@ -56,6 +74,7 @@ function listGroups(uid) {
         });
     });
 }
+<<<<<<< HEAD
  
 /**
  * TBM
@@ -65,6 +84,21 @@ function listGroups(uid) {
  */
 function listMembers(uid) {
     client.bind("uid=${uid},ou=eleves,dc=frankiz,dc=net", (err) => { console.log(err); });
+=======
+
+// 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); });
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     
     return new Promise(function(resolve, reject) {
         var groupsList=[];
@@ -78,10 +112,14 @@ function listMembers(uid) {
             }
         });
     });
+<<<<<<< HEAD
 }
 
 // Synthaxe d'utilisation
 listGroups("quentin.chevalier","Ie42fds'eaJm1").then((grList) => { console.log(grList); });</code></pre>
+=======
+}*/</code></pre>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
         </article>
     </section>
 
@@ -91,13 +129,21 @@ listGroups("quentin.chevalier","Ie42fds'eaJm1").then((grList) => { console.log(g
 </div>
 
 <nav>
+<<<<<<< HEAD
     <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><li><a href="global.html#listMembers">listMembers</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </nav>
 
 <br class="clear">
 
 <footer>
+<<<<<<< HEAD
     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:49:00 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)
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </footer>
 
 <script> prettyPrint(); </script>
diff --git a/doc/src_server.js.html b/doc/src_server.js.html
index 4b4c8dd72ff51d04fc1f2002157ce2a8c31e4eed..1619ef261d890202affd64f6eade1137620eb783 100644
--- a/doc/src_server.js.html
+++ b/doc/src_server.js.html
@@ -71,9 +71,17 @@ const typeDefs = `
     }
 
     type Group {
+<<<<<<< HEAD
         name: String
         id: Int
         school: String
+=======
+        name: String!
+        id: ID!
+        updatedAt: String!
+        description: String
+        school: String!
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
     }
 `;
 
@@ -104,13 +112,21 @@ export default server;
 </div>
 
 <nav>
+<<<<<<< HEAD
     <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><li><a href="global.html#listMembers">listMembers</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>
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </nav>
 
 <br class="clear">
 
 <footer>
+<<<<<<< HEAD
     Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.5.5</a> on Wed Feb 28 2018 09:49:00 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)
+>>>>>>> 65d345b0b615581fa3cae6fa778b938f07bb4cf4
 </footer>
 
 <script> prettyPrint(); </script>
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/admin_view/admin_view.js b/src/admin_view/admin_router.js
similarity index 61%
rename from src/admin_view/admin_view.js
rename to src/admin_view/admin_router.js
index f905c586c2b89ca10dcfddbc439f1c1a4d4fe7b1..0c8fae6ace33cf385e10ad4a3d38ceb695088c79 100644
--- a/src/admin_view/admin_view.js
+++ b/src/admin_view/admin_router.js
@@ -1,18 +1,53 @@
 /**
  * @file Interface "administrateur" de l'acces aux BDD. S'appuie sur css et views.
  */
+
 import express from 'express';
 import knex from '../../db/knex_router';
+import passport from 'passport';
 
 const router = express.Router();
 
-let port = 3000;
+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: <- 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;
@@ -76,4 +111,4 @@ router.use((err, req, res, next) => {
     });
 });
 
-export default router;
\ No newline at end of file
+export default router;
diff --git a/src/index.js b/src/index.js
index 8cf048f20ca45d473bf7c8221d3de754695c9816..f61366f733ae28a66cabdaf699d6024c1f41244b 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,15 +1,24 @@
-import server from './server';
-import router from './admin_view/admin_view';
-import colors from 'colors';
-import path from 'path';
-
 /**
  * @file Entry point de webpack
  */
+
+import server from './server';
+import colors from 'colors';
+
+import { graphqlExpress, graphiqlExpress } from 'graphql-server-express';
+import makeExecutableSchema from 'graphql-tools';
+
+import setupLdapAuth from './ldap_auth/ldap_auth';
+import router from './admin_view/admin_router';
+
+// setting up ldap authentication
+setupLdapAuth(server);
+
+// setting up l'interface admin des BDD
 server.use(router);
 
 let port = process.env.PORT || 3000;
 
 server.listen(port, () => {
     console.log(colors.blue(`Express server listening on port ${port}`));
-});
\ No newline at end of file
+});
diff --git a/src/ldap_auth/ldap_auth.js b/src/ldap_auth/ldap_auth.js
index 0f7a2e2f15ad5b89be6f077bb4fa333624365071..6da40b132f6fce41c18e672b77eafc5643ff0c1b 100644
--- a/src/ldap_auth/ldap_auth.js
+++ b/src/ldap_auth/ldap_auth.js
@@ -1,10 +1,11 @@
-//var cookieParser = require('cookie-parser');
-//var routes = require('./routes/routes');
-//var api = require('./api/api');
+/**
+ * @file ldap_auth
+ * @summary Setup de l'auth ldap avec passport-ldapauth
+ */
+
 import passport from 'passport';
 import LdapStrategy from 'passport-ldapauth';
 import session from 'express-session';
-import ldap from 'ldapjs';
 import fs from 'fs';
 
 /**
@@ -12,7 +13,7 @@ import fs from 'fs';
  * @author Wangounet
  */
 
-function SetupLdap(app) {
+function setupLdapAuth(server) {
     var config = JSON.parse(fs.readFileSync('config.json', 'utf8'));
     
     passport.use(new LdapStrategy({
@@ -23,9 +24,15 @@ function SetupLdap(app) {
         }
     }));
 
-    app.use(session({ secret: config.sessionSecret}));
-    app.use(passport.initialize());
-    app.use(passport.session());
+    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);
@@ -36,15 +43,7 @@ function SetupLdap(app) {
     });
 
     // Returns middleware that parses cookies
-    //app.use(cookieParser());
-
-    //routes(app, passport);
-    //api(app, passport, ldap, mailqueue, config);
-
-    setInterval(function(){
-        //console.log(mailqueue.length);
-    }, 2000);
-
+    //server.use(cookieParser());
 }
 
-export default SetupLdap;
\ No newline at end of file
+export default setupLdapAuth;
diff --git a/src/server.js b/src/server.js
index 5bd7c6f4f7bf5017bdf71e78da383525f68b429a..ebcce17253347f981dda36dde9703b1181d00f22 100644
--- a/src/server.js
+++ b/src/server.js
@@ -41,9 +41,11 @@ const typeDefs = `
     }
 
     type Group {
-        name: String
-        id: Int
-        school: String
+        name: String!
+        id: ID!
+        updatedAt: String!
+        description: String
+        school: String!
     }
 `;
 
diff --git a/src/views/home.pug b/src/views/home.pug
index 20f88d1de35b41901c1385d5def01325ccd3986f..e0b402e12dbbe063f98bb2ea06a5116453b8b2e3 100644
--- a/src/views/home.pug
+++ b/src/views/home.pug
@@ -2,7 +2,8 @@ extends layout.pug
 
 block content
     h1 Welcome to API server
-    p Hello, world ! This is server talking to you live on port #{port} !
+    p Hello, world! This is server talking to you live on port #{port}!
+    p "Interface BDD" du back
     form(action="/db", method="get")
         div.form-group
             label(for="table") Table
@@ -12,4 +13,7 @@ block content
             input.form-control(type="search", name="columns")
         button.form-control(type="submit") Search
     |
-    a(href="/graphiql") Check GraphQL
\ No newline at end of file
+    a(href="/graphql") Check GraphQL
+    |
+    form(action="/logout", method="post")
+        button.form-control(type="submit") Se deconnecter
diff --git a/src/views/login.pug b/src/views/login.pug
new file mode 100644
index 0000000000000000000000000000000000000000..18abbff1ba0bd8030f074582611646d221c91001
--- /dev/null
+++ b/src/views/login.pug
@@ -0,0 +1,14 @@
+extends layout.pug
+
+block content
+    h1 Welcome to API server
+    p Hello, world! This is server talking to you live on port #{port}!
+    p Vous devez vous connecter pour acceder aux BDD ("interface admin").
+    form(action="/loginAttempt", method="post")
+        div.form-group
+            label(for="username") Frankiz ID
+            input.form-control(type="text", placeholder="User", name="username")
+        div.form-group
+            label(for="password") Password
+            input.form-control(type="password", placeholder="Password", name="password")
+        button.form-control(type="submit") Log in