diff --git a/package-lock.json b/package-lock.json
index a3573454acae693429fbcc9a3230bfb7127bfc4a..75529fa355afaf009a389b2a98c7ae813fcbda77 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1181,6 +1181,15 @@
       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
     },
+    "cors": {
+      "version": "2.8.4",
+      "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.4.tgz",
+      "integrity": "sha1-K9OB8usgECAQXNUOpZ2mMJBpRoY=",
+      "requires": {
+        "object-assign": "4.1.1",
+        "vary": "1.1.2"
+      }
+    },
     "crc": {
       "version": "3.4.4",
       "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
@@ -2463,7 +2472,6 @@
         "debug": {
           "version": "2.6.8",
           "bundled": true,
-          "dev": true,
           "optional": true,
           "requires": {
             "ms": "2.0.0"
@@ -2513,7 +2521,6 @@
         "form-data": {
           "version": "2.1.4",
           "bundled": true,
-          "dev": true,
           "optional": true,
           "requires": {
             "asynckit": "0.4.0",
@@ -2599,7 +2606,6 @@
         "har-validator": {
           "version": "4.2.1",
           "bundled": true,
-          "dev": true,
           "optional": true,
           "requires": {
             "ajv": "4.11.8",
@@ -2655,7 +2661,6 @@
         "is-fullwidth-code-point": {
           "version": "1.0.0",
           "bundled": true,
-          "dev": true,
           "requires": {
             "number-is-nan": "1.0.1"
           }
@@ -2724,20 +2729,17 @@
             "assert-plus": {
               "version": "1.0.0",
               "bundled": true,
-              "dev": true,
               "optional": true
             }
           }
         },
         "mime-db": {
           "version": "1.27.0",
-          "bundled": true,
-          "dev": true
+          "bundled": true
         },
         "mime-types": {
           "version": "2.1.15",
           "bundled": true,
-          "dev": true,
           "requires": {
             "mime-db": "1.27.0"
           }
@@ -2745,20 +2747,17 @@
         "minimatch": {
           "version": "3.0.4",
           "bundled": true,
-          "dev": true,
           "requires": {
             "brace-expansion": "1.1.7"
           }
         },
         "minimist": {
           "version": "0.0.8",
-          "bundled": true,
-          "dev": true
+          "bundled": true
         },
         "mkdirp": {
           "version": "0.5.1",
           "bundled": true,
-          "dev": true,
           "requires": {
             "minimist": "0.0.8"
           }
@@ -2766,7 +2765,6 @@
         "ms": {
           "version": "2.0.0",
           "bundled": true,
-          "dev": true,
           "optional": true
         },
         "node-pre-gyp": {
@@ -2809,19 +2807,16 @@
         },
         "number-is-nan": {
           "version": "1.0.1",
-          "bundled": true,
-          "dev": true
+          "bundled": true
         },
         "oauth-sign": {
           "version": "0.8.2",
           "bundled": true,
-          "dev": true,
           "optional": true
         },
         "object-assign": {
           "version": "4.1.1",
           "bundled": true,
-          "dev": true,
           "optional": true
         },
         "once": {
@@ -2834,7 +2829,6 @@
         "os-homedir": {
           "version": "1.0.2",
           "bundled": true,
-          "dev": true,
           "optional": true
         },
         "os-tmpdir": {
diff --git a/package.json b/package.json
index 84aedce3d6f7a8d49cf85d49b82d521f3d0201af..2227f83fe49302f4c9dbb55c6ff6597f48699132 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
     "colors": "^1.1.2",
     "connect-ensure-login": "^0.1.1",
     "connect-flash": "^0.1.1",
+    "cors": "^2.8.4",
     "express": "^4.16.2",
     "express-session": "^1.15.6",
     "fs": "0.0.1-security",
diff --git a/src/graphql/schema.js b/src/graphql/schema.js
index a9316b455239aeff5044a5c4811b3f9d105df6db..c1209010e603e1207bab5e0796236f53137c09b6 100644
--- a/src/graphql/schema.js
+++ b/src/graphql/schema.js
@@ -1,9 +1,17 @@
+/**
+ * @file Ce fichier genere le shema utilise par Apollo. C'est ici que les requetes GraphQl sont résolues.
+ * @author akka vodol
+*/
+
 import knex from '../../db/knex_router';
+// import { listGroups, listMembers } from '../ldap/ldap_data';
 import { makeExecutableSchema } from 'graphql-tools';
+import { request } from 'https';
 
 const typeDefs = `
     type Query {
-        groups: [Group]!
+        allGroups: [Group]
+        group(id: ID) : [Group]
     }
 
     type Group {
@@ -16,9 +24,25 @@ const typeDefs = `
     }
 `;
 
+const getAllVisibleGroups = (user) => {
+    // let group_ids = listGroups(user.id);
+    return knex.select().from('groups')/*.whereIn('id', group_ids)*/;
+};
+    
+const getGroupIfVisible = (user, id) => {
+    return getAllVisibleGroups(user)/*.where('id', id).then(function(table) {
+        console.log(JSON.stringify(table,null,2))*/;
+};
+
 const resolvers = {
     Query: {
-        groups: () => knex.select().from('groups')
+        allGroups: (obj, args, context) => {
+            return getAllVisibleGroups(context.user);
+        },
+        group: (obj, args, context) => {
+            console.log(args.id);
+            return getGroupIfVisible(context.user, args.id);
+        }
     }
 };
 
diff --git a/src/ldap/ldap_data.js b/src/ldap/ldap_data.js
index 6abfba2df89c3e5932dae37d19f9aebd491f18f3..3d87b65234baa02835f9e96b66dd24734ceae383 100644
--- a/src/ldap/ldap_data.js
+++ b/src/ldap/ldap_data.js
@@ -16,7 +16,7 @@ var ldapEscape = require('ldap-escape');*/
 var ensureLoggedin =  require('connect-ensure-login').ensureLoggedIn;
 
 // Point central ; tous les champs de la BDD sont 'cachés' dans config.json et pas visibles directement
-let config = JSON.parse(fs.readFileSync('../../config.json', 'utf8'));
+let config = JSON.parse(fs.readFileSync('./config.json', 'utf8'));
 
 // Connection au serveur LDAP avec des temps de timeout arbitraires
 var client = ldap.createClient({ url: config.ldap.server});
@@ -230,4 +230,4 @@ function TOL(c0="", c1="", c2="", c3="", c4="", c5="", c6="", c7="", c8="", c9="
 /* Partage pour le reste du monde ; même remarque synthaxe que pour l'import */
 export { listGroups, listMembers, TOL };
 
-/*module.exports ={ listGroups, listMembers, TOL };*/
\ No newline at end of file
+/*module.exports ={ listGroups, listMembers, TOL };*/
diff --git a/src/server.js b/src/server.js
index 87f08aed5ea51e0dddb2d41295d317464f5dbbe3..a40a9c57dcb4903ef9a11707f386f2ca50bdc5e4 100644
--- a/src/server.js
+++ b/src/server.js
@@ -6,6 +6,7 @@ import bodyParser from 'body-parser';
 import favicon from 'serve-favicon';
 import morgan from 'morgan';
 import path from 'path';
+import cors from 'cors';
 import schema from './graphql/schema';
 import { graphqlExpress, graphiqlExpress } from 'graphql-server-express';
 import flash from 'connect-flash';
@@ -15,7 +16,7 @@ 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
+    extended: true
 }));
 
 // setting up view engine for pug
@@ -31,10 +32,24 @@ server.use(favicon(path.resolve('./','assets','favicon.ico')));
 server.use(morgan('dev'));
 
 // Charge le middleware express pour GraphQL
-server.use('/graphql', bodyParser.json(), graphqlExpress({schema}));
+server.use('/graphql', bodyParser.json(), cors(),
+    graphqlExpress(req => {
+        let uid;
+
+        try {
+            uid = req.session.id;
+        } catch (err) {
+            uid = "1";
+        }
+
+        return {
+            schema : schema,
+            context : {user : {id : uid}}
+        };
+    }));
 
 // GraphiQL est une console interactive pour faire des requêtes au schéma GraphQL
-server.use('/graphiql', graphiqlExpress({ endpointURL: '/graphql'}));
+server.use('/graphiql', graphiqlExpress({endpointURL: '/graphql'}));
 
 // connect-flash is middleware for flashing messages
 server.use(flash());