diff --git a/.gitignore b/.gitignore
index 2ff2621baa8911c4fe92b60a827ecee77bd92171..f2538606a019f1ef194242596008918e4e8b7aa8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -69,5 +69,4 @@ typings/
 # Generated files
 doc/
 build/
-ldap_config.json
 sigma-back.service
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 75529fa355afaf009a389b2a98c7ae813fcbda77..df35bb706847fff6fd94ea74e72ea60258b04677 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -157,7 +157,6 @@
       "version": "5.5.2",
       "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz",
       "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
-      "dev": true,
       "requires": {
         "co": "4.6.0",
         "fast-deep-equal": "1.0.0",
@@ -1024,8 +1023,7 @@
     "co": {
       "version": "4.6.0",
       "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
-      "dev": true
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
     },
     "code-point-at": {
       "version": "1.1.0",
@@ -2146,6 +2144,15 @@
         "object-assign": "4.1.1"
       }
     },
+    "file-loader": {
+      "version": "1.1.10",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.10.tgz",
+      "integrity": "sha512-dNnT4yJgUPtGDg0+m03kQ0b/PZi3Y12EnqYuRPNCsbYkBZc6j+fwVWy40jWzZjn5kIzQ4BLIxzJimbwAYlnPGw==",
+      "requires": {
+        "loader-utils": "1.1.0",
+        "schema-utils": "0.4.5"
+      }
+    },
     "filename-regex": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz",
@@ -5753,6 +5760,32 @@
         "ret": "0.1.15"
       }
     },
+    "schema-utils": {
+      "version": "0.4.5",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
+      "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
+      "requires": {
+        "ajv": "6.2.0",
+        "ajv-keywords": "3.1.0"
+      },
+      "dependencies": {
+        "ajv": {
+          "version": "6.2.0",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.2.0.tgz",
+          "integrity": "sha1-r6wpW7qgFSRJ5SJ0LkVHwa6TKNI=",
+          "requires": {
+            "fast-deep-equal": "1.0.0",
+            "fast-json-stable-stringify": "2.0.0",
+            "json-schema-traverse": "0.3.1"
+          }
+        },
+        "ajv-keywords": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.1.0.tgz",
+          "integrity": "sha1-rCsnk5xUPpXSwG5/f1wnvkqlQ74="
+        }
+      }
+    },
     "semver": {
       "version": "5.5.0",
       "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz",
@@ -6723,6 +6756,26 @@
         }
       }
     },
+    "url-loader": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-0.6.2.tgz",
+      "integrity": "sha512-h3qf9TNn53BpuXTTcpC+UehiRrl0Cv45Yr/xWayApjw6G8Bg2dGke7rIwDQ39piciWCWrC+WiqLjOh3SUp9n0Q==",
+      "requires": {
+        "loader-utils": "1.1.0",
+        "mime": "1.4.1",
+        "schema-utils": "0.3.0"
+      },
+      "dependencies": {
+        "schema-utils": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz",
+          "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=",
+          "requires": {
+            "ajv": "5.5.2"
+          }
+        }
+      }
+    },
     "url-parse-lax": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
diff --git a/package.json b/package.json
index 2227f83fe49302f4c9dbb55c6ff6597f48699132..012148b1897a5c3f756b868280ec9b738d66478e 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
     "cors": "^2.8.4",
     "express": "^4.16.2",
     "express-session": "^1.15.6",
+    "file-loader": "^1.1.10",
     "fs": "0.0.1-security",
     "fuse.js": "^3.2.0",
     "graphql": "^0.13.1",
@@ -25,6 +26,7 @@
     "pg": "^7.4.1",
     "pug": "^2.0.0-rc.4",
     "serve-favicon": "^2.4.5",
+    "url-loader": "^0.6.2",
     "webpack": "^3.11.0",
     "webpack-node-externals": "^1.6.0"
   },
diff --git a/sigma-back-dev.service b/sigma-back-dev.service
index 118eacbb61a3fab935a2a8129acf3264f68dc82e..46874305bf25d714ce7152bae87ebc0d2ff3aa66 100644
--- a/sigma-back-dev.service
+++ b/sigma-back-dev.service
@@ -6,7 +6,7 @@ After=network-online.target
 [Service]
 Environment=NODE_ENV=development
 WorkingDirectory=/opt/sigma-back
-ExecStart=/usr/bin/node app.js
+ExecStart=node app.js
 Restart=always
 
 [Install]
diff --git a/src/admin_view/admin_router.js b/src/admin_view/admin_router.js
index 4a4a663a0399002eda6dddf291918779dd355641..503d8dd5cffc33ed42923e3cd7e962244d3c6dd8 100644
--- a/src/admin_view/admin_router.js
+++ b/src/admin_view/admin_router.js
@@ -17,11 +17,32 @@ router.get('/', function (req, res) {
         errorMessage: req.flash('error') });
 });
 
+/**
+ * @description Le login se fait en POST. Faire un GET à /login renvoie à la racine /
+ */
+router.get('/login', function(req,res) {
+    console.log('Redirecting to home...');
+    res.redirect('/');
+});
+
 router.get('/admin',
-    // ensureLoggedIn('/'),
+    ensureLoggedIn('/login'),
     function (req, res) {
         console.log('Connecting to ' + req.url);
-        res.render('home', { title: 'Home', port: port });
+        let userName;
+        /*
+         * On ne veut pas déclencer d'erreur 500 si on ne peut pas lire l'utilisateur
+         * La personne n'est peut-être pas connectée, mais cela doit être géré autrement
+         */
+        try {
+            let user = req.session.passport.user;
+            console.log('Welcome,',user.cn);
+            userName = user.cn;
+        } catch (err) {
+            console.log(err.message);
+            userName = "No one";
+        }
+        res.render('home', { title: 'Home', port: port, userName: userName });
     });
 
 router.post('/login', 
@@ -105,7 +126,9 @@ router.use((req, res, next) => {
  * @summary Gère les erreurs 404
  */
 router.use((err, req, res, next) => {
+    console.log("Entering error handler");
     res.locals.message = err.message;
+    console.log(err.message);
 
     res.status(err.status || 500);
     let error_message = res.statusCode == 404 ? 'Not found.' : 'Internal server error.';
diff --git a/src/graphql/schema.js b/src/graphql/schema.js
index 1dee84f8c7be0f2013011b16f5f8b5ded9ffb6bc..ca8bca32b9a31dd6e462a294aeff6251840ff172 100644
--- a/src/graphql/schema.js
+++ b/src/graphql/schema.js
@@ -1,5 +1,5 @@
 /**
- * @file Ce fichier genere le shema utilise par Apollo. C'est ici que les requetes GraphQl sont résolues.
+ * @file Ce fichier génère le schéma GraphQL. C'est ici que les requêtes GraphQl sont résolues.
  * @author akka vodol
 */
 import knex from '../../db/knex_router';
@@ -40,11 +40,11 @@ const typeDefs = `
         asViewer(groupid: String): ViewerMutation
 
         createGroup(
-            uid: ID = null, 
-            name: String,
-            website: String,
-            description: String,
-            school: String,
+            uid: ID = null
+            name: String
+            website: String
+            description: String
+            school: String
             parentuid : String
         ): Group
     }
@@ -200,6 +200,7 @@ const resolvers = {
         user: (obj, args, context) => {
             const refactorer = (data) => {
                 return {
+                    uid: args.uid,
                     lastName: data.sn,
                     givenName: data.givenName,
                     birthdate: data.brBirthdate,
@@ -207,15 +208,13 @@ const resolvers = {
                 };
             };
 
-            const result = rens(args.uid).then((res) => {
-                let refactData = res.map(data => {
-                    let result = refactorer(data);
-                    return result;
-                });
-                console.log(refactData);
-                return refactData;
+            console.log("Logged in as:",context.user);
+
+            const result = rens(context.user, args.uid).then(res => {
+                const output = res.map(entry => refactorer(entry));
+                return output;
             });
-            console.log(result);
+
             return result;
         }
     },
diff --git a/src/ldap/ldap_data.js b/src/ldap/ldap_data.js
index f34fba5f56a1ea0ce166f89df11264cfef9c745f..27fd16790a56d292cbf3a4daab14acb7a428eedb 100644
--- a/src/ldap/ldap_data.js
+++ b/src/ldap/ldap_data.js
@@ -208,7 +208,7 @@ function listAdmins(user, gid) {
  * @arg {Object} user - Utilisateur de la forme nécessaire au bind
  * @arg {string} user[key] - uid et password
  * @arg {string} uid - Identifiant de l'utilisateur
- * @return {Object} Informations recueillies ; rennvoit une liste de dictionnaire avec les mêmes clés que dans le TOL, voir config.json.
+ * @return {Object} Informations recueillies ; renvoie une liste de dictionnaire avec les mêmes clés que dans le TOL, voir config.json.
  */
 function rens(user, uid) {
     return new Promise(function(resolve, reject) {
diff --git a/src/server.js b/src/server.js
index 994fb46cc9d8847dc0fd87a5dd5fdadca11b600d..99184c879573b713d47106b48f5607a6e3506460 100644
--- a/src/server.js
+++ b/src/server.js
@@ -2,6 +2,7 @@
  * @file Cree le serveur express avec tous les middleware qui vont bien
 */
 import express from 'express';
+import session from 'express-session';
 import bodyParser from 'body-parser';
 import favicon from 'serve-favicon';
 import morgan from 'morgan';
@@ -19,6 +20,19 @@ server.use(bodyParser.urlencoded({
     extended: true
 }));
 
+/**
+ * @description Cache le fait que l'application tourne sous Express dans le header HTTP.
+ */
+server.disable('x-powered-by');
+
+// Configuration de express-session
+server.use(session({
+    secret: 'race condition',
+    cookie: { maxAge: 60000 },
+    resave: true,
+    saveUninitialized: true
+}));
+
 // setting up view engine for pug
 let viewpath = path.resolve('./','src','views');
 server.set('views', viewpath);
@@ -39,14 +53,11 @@ server.use('/graphql', bodyParser.json(), cors(),
         let password;
 
         try {
-            uid = "anatole.romon";
-            password = "mythe"
-            //uid = req.session.id;
-            //password = req.session.password;
+            uid = req.session.passport.user.uid;
+            password = "mythe";
         } catch (err) {
-            uid = "louis.vanneau";
-            password = "mythe"
-
+            uid = "louis.vaneau";
+            password = "mythe";
         }
 
         return {
diff --git a/src/views/home.pug b/src/views/home.pug
index 5f54ed0546251e286f383302cdc4305ef6034302..ecf13fedf6636a61dca465b52cdd07c5ef4dbafc 100644
--- a/src/views/home.pug
+++ b/src/views/home.pug
@@ -20,5 +20,6 @@ block content
         | requests to the database.
     a(href="/graphiql") Check it out.
     |
+    p Currently logged in as: #{userName}.
     form(action="/logout", method="post")
         button.form-control(type="submit") Déconnexion/<em>Logout</em>
diff --git a/webpack.config.js b/webpack.config.js
index eb89149a2ae7cb850e9071bfd68a5003c01ebb95..192a23d259b42d65fd9ccf028e7e989052844c8c 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,19 +1,30 @@
 const path = require('path');
 const nodeExternals = require('webpack-node-externals');
 
-var config = {
+const config = {
     entry: './src/index.js',
+
     target: 'node',
+    
     output: {
-        filename: 'bundle.js',
-        path: path.resolve(__dirname, 'build')
+        path: path.resolve(__dirname, 'build'),
+        publicPath: '/',
+        filename: 'bundle.js'
     },
+    
     externals: [nodeExternals()],
+    
     module: {
         loaders: [{
-            test: /\.(png|jpg|ico)/,
+            test: /\.css$/,
+            use: ['style-loader', 'css-loader']
+        },{
+            test: /\.(png|jpg|ico)$/,
             exclude: /node_modules/,
-            loader: 'url-loader'
+            loader: 'file-loader',
+            options: {
+                limit: 10000
+            }
         }]
     }
 };