diff --git a/src/graphql/connectors/authentifiers.js b/src/graphql/connectors/authentifiers.js
index 481346f2c55d4306bdc22adc9f3293a09e0973ef..68346c6eae02f2242b2fe05af8d0212dffd7f6dd 100644
--- a/src/graphql/connectors/authentifiers.js
+++ b/src/graphql/connectors/authentifiers.js
@@ -9,14 +9,14 @@ import * as selectors from './selectors';
 import * as list_selectors from './list_selectors';
 import { utilisateurAnonyme, utilisateurConnecte, 
     administrateurConnecte, superAdministrateurConnecte
-    } from '../../ldap/ldap_data';
+} from '../../ldap/ldap_data';
 
 
 function user_object(user, ldap_access){
     this.anonymous = Boolean(user.anonymous),
     this.uid = user.uid,
     this.password = user.password,
-    this.ldap_access = ldap_access
+    this.ldap_access = ldap_access;
 }
 
 /**
@@ -93,7 +93,7 @@ export async function admin(user, groupUID){
  */
 export async function superviser(user, groupUID){
     let supervised_groups = await list_selectors.supervisedGroups(user);
-    let i = supervised_groups.indexOf(args.groupUID)
+    let i = supervised_groups.indexOf(groupUID);
     if(i < 0)
         return false;
     return supervised_groups.justification(i) || true;
diff --git a/src/graphql/connectors/connectors.js b/src/graphql/connectors/connectors.js
index 9a3c6e52673473ff2946f2e694f2b509ab7a5974..c6648e6add637c3a53d2de86a4ad994ce2f1b3ab 100644
--- a/src/graphql/connectors/connectors.js
+++ b/src/graphql/connectors/connectors.js
@@ -8,13 +8,12 @@ import * as selectors from './selectors';
 import * as list_selectors from './list_selectors';
 
 /*
-    Le tag @rights et la gestion des authorisations
+    Le tag @rights est la gestion des autorisations.
 
     Le système GraphQL est pensé comme l'interface par laquelle les utilisateurs 
     intéragissent avec sigma, les graphismes en moins.
-    Pour cette raison, et pour des questions de sécurité, il faut partir du principe que
-    l'utilisateir peut rédiger n'importe quelle requête, et que c'est au niveau des resolvers
-    que la sécurité ce déroule. C'est dans cette optique que j'utilise le tag @rights
+    Le client peut envoyer tout type de requête. C'est au niveau des resolvers
+    que les permissions sont gérées. D'où le @rights
 
     Commençons par un rappel sur le fonctionnement des droits. 
     Chaque utilisateur a un certain niveau de droit sur chaque groupe. Ce niveau de droit indique
@@ -527,7 +526,7 @@ export async function getGroupMemberUsers(user, GroupUID){
     switch( type ){
     case "SimpleGroup":
         return user.ldap_access.listerMembres(GroupUID);
-        return ["anatole.romon"];
+        // return ["anatole.romon"];
     case "MetaGroup":
         return getMetaGroupMemberUsers(user, GroupUID);
     default:
diff --git a/src/ldap/ldap_data.js b/src/ldap/ldap_data.js
index ba87a91531892949207b81cea4bc3ab9bfbe72f4..90997a4c455995f7a1dad1907f11eafd6d6d29e5 100644
--- a/src/ldap/ldap_data.js
+++ b/src/ldap/ldap_data.js
@@ -275,12 +275,12 @@ function repliquerTOL(data) {
  * @param {string} gid  - Identification du groupe à tester
  * @returns {Promise(boolean)} True si l'utilisateur est membre
  */
-function etreMembreGroupe(uid, gid) {
+function etreMembreGroupe(uid, gid, utilisateur) {
     return new Promise((resolve, reject) => {
-        listerGroupes(uid).then(lg => {
-            listerMembres(gid).then(lm => {
+        utilisateur.listerGroupes(uid).then(lg => {
+            utilisateur.listerMembres(gid).then(lm => {
                 if (lg.includes(gid) | lm.includes(uid)) {
-                        resolve(true);
+                    resolve(true);
                 }
             });
         });
@@ -294,9 +294,9 @@ function etreMembreGroupe(uid, gid) {
  * @param {string} gid  - Identification du groupe à tester
  * @returns {Promise(boolean)} True si l'utilisateur est administrateur
  */
-function etreAdministrateurGroupe(uid, gid) {
+function etreAdministrateurGroupe(uid, gid, utilisateur) {
     return new Promise((resolve, reject) => {
-        listerAdministrateurs(gid).then(la => {
+        utilisateur.listerAdministrateurs(gid).then(la => {
             if (la.includes(uid)) {
                 resolve(true);
             }
@@ -430,7 +430,7 @@ class utilisateurAnonyme {
      */
     listerAdministrateurs(gid) {
         return new Promise((resolve, reject) => {
-            rechercherLDAP(dapEscape.filter(config.key_id+"=${id},"+config.dn_users, {id : gid}), config.group.admin).then(res => resolve(res[0]));
+            rechercherLDAP(ldapEscape.filter(config.key_id+"=${id},"+config.dn_users, {id : gid}), config.group.admin).then(res => resolve(res[0]));
         });
     }
      
@@ -443,7 +443,7 @@ class utilisateurAnonyme {
      */
     renseignerSurUtilisateur(uid) {
         return new Promise((resolve, reject) => {
-            rechercherLDAP(dapEscape.filter(config.key_id+"=${id},"+config.dn_users, {id : uid}), config.user.profil).then(res => resolve(res));
+            rechercherLDAP(ldapEscape.filter(config.key_id+"=${id},"+config.dn_users, {id : uid}), config.user.profil).then(res => resolve(res));
         });
     }
      
@@ -456,7 +456,7 @@ class utilisateurAnonyme {
      */
     renseignerSurGroupe(gid) {
         return new Promise((resolve, reject) => {
-            rechercherLDAP(dapEscape.filter(config.key_id+"=${id},"+config.dn_groups, {id : gid}), config.group.profil).then(res => resolve(res));
+            rechercherLDAP(ldapEscape.filter(config.key_id+"=${id},"+config.dn_groups, {id : gid}), config.group.profil).then(res => resolve(res));
         });
     }
 
@@ -471,7 +471,7 @@ class utilisateurAnonyme {
      * @arg {string} type - String aux valeurs prédéfinies dans ldap_config.
      * @return {Promise(string[])} Liste des uid de groupes dont le nom ressemble à l'input
     */
-   trouverGroupesParTypes(input, type) {
+    trouverGroupesParTypes(input, type) {
         return new Promise((resolve, reject) => {
             // Simple appel à la fonction précédente
             trouverGroupesModulable(input, [config.key_id, config.group.type]).then(gList => {
@@ -508,6 +508,7 @@ class utilisateurAnonyme {
 */
 class utilisateurConnecte extends utilisateurAnonyme {
     constructor(user) {
+        super(user);
         connecterLDAP(user);
     }
 
@@ -582,8 +583,8 @@ class utilisateurConnecte extends utilisateurAnonyme {
                 });
     
                 // Utilisation des fonctions adaptées pour assurer la cohérence de l'ensemble
-                data['members'].forEach(uid => { ajouterMembreGroupe(user, uid, vals[config.key_att]); });
-                data['admins'].forEach(uid => { ajouterAdministrateurGroupe(user, uid, vals[config.key_att]); });
+                data['members'].forEach(uid => { this.ajouterMembreGroupe(user, uid, vals[config.key_att]); });
+                data['admins'].forEach(uid => { this.ajouterAdministrateurGroupe(user, uid, vals[config.key_att]); });
     
                 resolve(true);
             });
@@ -609,7 +610,7 @@ class utilisateurConnecte extends utilisateurAnonyme {
     editerUtilisateur(user, uid, data) {
         return new Promise((resolve, reject) => {
             // Récupération des anciennes données
-            renseignerSurUtilisateur(user, uid).then(profil => {
+            this.renseignerSurUtilisateur(user, uid).then(profil => {
                 // Reecriture de profil avec les bons champs
                 Object.keys(profil).forEach(keyLDAP => {
                     Object.keys(config.user).forEach(keyAlias => {
@@ -618,7 +619,7 @@ class utilisateurConnecte extends utilisateurAnonyme {
                     });
                 });
                 // Régénération du champ manquant dans profil
-                listerGroupes(user, uid).then(lg => {
+                this.listerGroupes(user, uid).then(lg => {
                     profil['groupsIsAdmin']=[];
                     lg.forEach(gid =>{
                         etreAdministrateurGroupe(user, uid, gid).then(res =>{
@@ -629,8 +630,8 @@ class utilisateurConnecte extends utilisateurAnonyme {
                                 profil[key]=data[key];
                             });
                             // Modification propre
-                            supprimerUtilisateur(user, uid).then(r => {
-                                creerUtilisateur(user, profil).then(res => { if (!res) {reject(false); }});
+                            this.supprimerUtilisateur(user, uid).then(r => {
+                                this.creerUtilisateur(user, profil).then(res => { if (!res) {reject(false); }});
                             }).then (res => { resolve(true); });
                         });
                     });
@@ -671,7 +672,7 @@ class administrateurConnecte extends utilisateurConnecte {
     ajouterMembreGroupe(user, uid, gid) {
         return new Promise((resolve, reject) => {
             // Vérifie que l'utilisateur est pas déjà membre pour groupes
-            listerMembres(user,gid).then(lm => {
+            this.listerMembres(user,gid).then(lm => {
                 if (!lm.includes(uid)) {
                     let vals = {};
                     vals[config.groups.member] = uid;
@@ -681,7 +682,7 @@ class administrateurConnecte extends utilisateurConnecte {
                     });
                 }
             // Vérifie que l'utilisateur est pas déjà membre pour users
-            }).then(res => listerGroupes(user,uid)).then( lg => {
+            }).then(res => this.listerGroupes(user,uid)).then( lg => {
                 if (!lg.includes(gid)) {
                     let vals2 = {};
                     vals2[config.users.groups] = gid;
@@ -706,24 +707,24 @@ class administrateurConnecte extends utilisateurConnecte {
     supprimerMembreGroupe(user, uid, gid) {
         return new Promise((resolve, reject) => {
             // Vérifie que l'utilisateur est pas déjà viré pour groupes
-            listerMembres(user,gid).then(lm => {
+            this.listerMembres(user,gid).then(lm => {
                 if (lm.includes(uid)) {
                     // Supprime tous les utilisateurs
                     modifierLDAP(user, ldapEscape(config.key_id+"=${id},"+config.dn_groups, { id: gid }), "del", config.group.member).then(res => {
                         // Les rajoute un par un, sauf pour le supprimé
                         lm.forEach(id => {
-                            if (id!=uid) { ajouterMembreGroupe(user,id, gid); }
+                            if (id!=uid) { this.ajouterMembreGroupe(user,id, gid); }
                         });
                     });
                 }
-            }).then(res => listerGroupes(user,uid)).then(lg => {
+            }).then(res => this.listerGroupes(user,uid)).then(lg => {
                 // Vérifie que l'utilisateur est pas déjà viré pour users
                 if (lg.includes(gid)) {
                     // Supprime tous les groupes
                     modifierLDAP(user, ldapEscape(config.key_id+"=${id},"+config.dn_users, { id: uid }), "del", config.group.admin).then(res => {
                         // Les rajoute un par un, sauf pour le supprimé
                         lg.forEach(id => {
-                            if (id!=gid) { ajouterMembreGroupe(user,uid, id); }
+                            if (id!=gid) { this.ajouterMembreGroupe(user,uid, id); }
                         });
                     });
                 }
@@ -744,8 +745,8 @@ class administrateurConnecte extends utilisateurConnecte {
     ajouterAdministrateurGroupe(user, uid, gid){
         return new Promise((resolve, reject) => {
             // ajouter
-            ajouterMembreGroupe(user,uid,gid).then(res => {
-                listerAdministrateurs(user,gid).includes(uid).then(la => {
+            this.ajouterMembreGroupe(user,uid,gid).then(res => {
+                this.listerAdministrateurs(user,gid).includes(uid).then(la => {
                     if (!la.includes(uid)) {
                         // Finalement modification, uniquement dans groups
                         let vals = {};
@@ -772,15 +773,15 @@ class administrateurConnecte extends utilisateurConnecte {
     supprimerAdministrateurGroupe(user, uid, gid) {
         return new Promise((resolve, reject) => {
             // Peut paraître absurde mais permet de s'assurer que le membre est bien présent et que ses champs sont comme il faut
-            supprimerMembreGroupe(user, uid, gid).then( res => { ajouterMembreGroupe(user,uid,gid); });
+            this.supprimerMembreGroupe(user, uid, gid).then( res => { this.ajouterMembreGroupe(user,uid,gid); });
             // Vérifie que l'utilisateur est bien admins (comme dans supprimerMembreGroupe)
-            listerAdministrateurs(user,gid).then(la => {
+            this.listerAdministrateurs(user,gid).then(la => {
                 if (la.includes(uid)) {
                     // Supprime tous les administrateurs
                     modifierLDAP(user, ldapEscape(config.key_id+"=${id},"+config.dn_groups, { id: gid }), "del", config.group.admin).then(res => {
                         // Les rajoute un par un, sauf pour le supprimé
                         la.forEach(id => {
-                            if (id!=uid) { ajouterAdministrateurGroupe(user, id, gid); }
+                            if (id!=uid) { this.ajouterAdministrateurGroupe(user, id, gid); }
                         });
                     });
                 }
@@ -803,7 +804,7 @@ class administrateurConnecte extends utilisateurConnecte {
     editerGroupe(user, gid, data) {
         return new Promise((resolve, reject) => {
             // Récupération des anciennes données
-            renseignerSurGroupe(user, gid).then(profil => {
+            this.renseignerSurGroupe(user, gid).then(profil => {
                 // Reecriture de profil avec les bons champs
                 Object.keys(profil).forEach(keyLDAP => {
                     Object.keys(config.group).forEach(keyAlias => {
@@ -816,8 +817,8 @@ class administrateurConnecte extends utilisateurConnecte {
                     profil[key]=data[key];
                 });
                 // Modification propre
-                supprimerGroupe(user, gid).then(r => {
-                    creerGroupe(user, profil).then(res => { if (!res) { reject(false); }});
+                this.supprimerGroupe(user, gid).then(r => {
+                    this.creerGroupe(user, profil).then(res => { if (!res) { reject(false); }});
                 }).then(res => { resolve(true); });
             });
         });
@@ -838,10 +839,10 @@ class administrateurConnecte extends utilisateurConnecte {
     supprimerGroupe(user, gid) {
         return new Promise(function(resolve, reject) {
             // Gestion des membres et administrateurs d'abord
-            renseignerSurGroupe(user, gid).then(profil => {
+            this.renseignerSurGroupe(user, gid).then(profil => {
                 // Ordre important
-                profil[config.group['admin']].forEach(id => { supprimerAdministrateurGroupe(user, id, gid); });
-                profil[config.group['member']].forEach(id => { supprimerMembreGroupe(user, id, gid); });
+                profil[config.group['admin']].forEach(id => { this.supprimerAdministrateurGroupe(user, id, gid); });
+                profil[config.group['member']].forEach(id => { this.supprimerMembreGroupe(user, id, gid); });
             // Elimination
             }).then(res => {
                 supprimerLDAP(user, config.key_id+"="+gid+","+config.dn_groups);
@@ -958,8 +959,8 @@ class superAdministrateurConnecte extends administrateurConnecte {
                 });
     
                 // Utilisation des fonctions adaptées pour assurer la cohérence de l'ensemble
-                data['groupsIsMember'].forEach(gid => { ajouterMembreGroupe(user, vals[config.key_id], gid); });
-                data['groupsIsAdmin'].forEach(gid => { ajouterAdministrateurGroupe(user, vals[config.key_id], gid); });
+                data['groupsIsMember'].forEach(gid => { this.ajouterMembreGroupe(user, vals[config.key_id], gid); });
+                data['groupsIsAdmin'].forEach(gid => { this.ajouterAdministrateurGroupe(user, vals[config.key_id], gid); });
     
                 resolve(true);
             });
@@ -982,11 +983,11 @@ class superAdministrateurConnecte extends administrateurConnecte {
     supprimerUtilisateur(user, uid) {
         return new Promise((resolve, reject) => {
             // Gestion des groupes d'abord
-            renseignerSurUtilisateur(user, uid).then(profil => {
+            this.renseignerSurUtilisateur(user, uid).then(profil => {
                 profil[config.user['groups']].forEach(gid => {
                     etreAdministrateurGroupe(user, gid).then(res => {
-                        if (la.includes(res)) { supprimerAdministrateurGroupe(user, uid, gid); }
-                    }).then(res => { supprimerMembreGroupe(user, uid, gid); });
+                        if (this.la.includes(res)) { this.supprimerAdministrateurGroupe(user, uid, gid); }
+                    }).then(res => { this.supprimerMembreGroupe(user, uid, gid); });
                 });
             // Elimination
             }).then(res => { supprimerLDAP(user, config.key_id+"="+uid+","+config.dn_users); });