diff --git a/src/graphql/connectors/authentifiers.js b/src/graphql/connectors/authentifiers.js
index 79f950f17e3e13f09936f8bd4540138f718773dd..47fc848e76622bd4a1f5f8635bd10d91c7676496 100644
--- a/src/graphql/connectors/authentifiers.js
+++ b/src/graphql/connectors/authentifiers.js
@@ -21,17 +21,19 @@ function User(user, ldap_access){
 /**
  * @summary Authentifie un utilisateur anonyme
  * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.  
- * @return {Promise(Boolean)} L'utilisateur possède-t-il les droits indiqués ici ?
+ * @return {Promise(Object)} Un objet user si l'utilisateur possède les droits indiqués, 
+ * null sinon
  * @rights user
  */
-export function anonymous(user){
+export async function anonymous(user){
     return new User(user, new UtilisateurAnonyme());
 }
 
 /**
  * @summary Authentifie un utilisateur comme viewer(groupUID)
- * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.  
- * @return {Promise(Boolean)} L'utilisateur possède-t-il les droits indiqués ici ?
+ * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.
+ * * @return {Promise(Object)} Un objet user si l'utilisateur possède les droits indiqués, 
+ * null sinon
  * @rights user
  */
 export function loggedIn(user, groupUID){
@@ -41,7 +43,8 @@ export function loggedIn(user, groupUID){
 /**
  * @summary Authentifie un utilisateur comme viewer(groupUID)
  * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.  
- * @return {Promise(Boolean)} L'utilisateur possède-t-il les droits indiqués ici ?
+ * * @return {Promise(Object)} Un objet user si l'utilisateur possède les droits indiqués, 
+ * null sinon
  * @rights user
  */
 export function viewer(user, groupUID){
@@ -51,7 +54,8 @@ export function viewer(user, groupUID){
 /**
  * @summary Authentifie un utilisateur anonyme
  * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.  
- * @return {Promise(Boolean)} L'utilisateur possède-t-il les droits indiqués ici ?
+ * * @return {Promise(Object)} Un objet user si l'utilisateur possède les droits indiqués, 
+ * null sinon
  * @rights user
  */
 export async function member(user, groupUID){
@@ -65,7 +69,8 @@ export async function member(user, groupUID){
 /**
  * @summary Authentifie un utilisateur comme viewer(groupUID)
  * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.  
- * @return {Promise(Boolean)} L'utilisateur possède-t-il les droits indiqués ici ?
+ * * @return {Promise(Object)} Un objet user si l'utilisateur possède les droits indiqués, 
+ * null sinon
  * @rights user
  */
 export async function speaker(user, groupUID){
@@ -75,18 +80,21 @@ export async function speaker(user, groupUID){
 /**
  * @summary Authentifie un utilisateur anonyme
  * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.  
- * @return {Promise(Boolean)} L'utilisateur possède-t-il les droits indiqués ici ?
+ * * @return {Promise(Object)} Un objet user si l'utilisateur possède les droits indiqués, 
+ * null sinon
  * @rights user
  */
 export async function admin(user, groupUID){
     let adminList = await list_selectors.usersWithAdminRights(user, groupUID);
-    return (typeof adminList != "undefined" && adminList.indexOf(user.uid) != -1);
+    if (typeof adminList != "undefined" && adminList.indexOf(user.uid) != -1)
+        return new User(user, AdministrateurConnecte());
 }
 
 /**
  * @summary Authentifie un utilisateur comme viewer(groupUID)
  * @arg {Object} user - Représente l'utilisateur qui a effectué la requête.  
- * @return {Promise(uid)} L'utilisateur possède-t-il les droits de superviseur ? Si oui, renvoie la justification. Sinon, renvoie false.
+ * @return {Promise(uid)} L'utilisateur possède-t-il les droits de superviseur ? 
+ * Si oui, renvoie la justification. Sinon, renvoie false.
  * Attention : renvoie true si l'utilisateur a les droits mais sans justification.
  * @rights user
  */
diff --git a/src/graphql/connectors/connectors.js b/src/graphql/connectors/connectors.js
index 90fbd8f5ce9a923b5f4d5e5e3828f51e449b52dd..baea0965d5989ba95bae69293ffe18ac2fa11e9e 100644
--- a/src/graphql/connectors/connectors.js
+++ b/src/graphql/connectors/connectors.js
@@ -13,6 +13,10 @@ import ldap_bind_user from '../../../ldap_connexion_config.json';
 const utilisateur = new ldap.UtilisateurAnonyme();
 
 export { utilisateur };
+/* Ce n'est pas comme ça qu'on est censé fonctionner. Toute utilisation de utilisateur
+ a vocation à être temporaire, et sera remplacé par l'usage des fonctions 
+ d'authentification correctes
+*/
 
 /*
     Le tag @rights est la gestion des autorisations.
@@ -345,7 +349,7 @@ export async function getAnnouncement(user, messageID){
         return res[0];
     }
     res = await knex.select().from('events').where('id', messageID)
-    .whereIn('id', await selectors.visibleEvents(user));
+        .whereIn('id', await selectors.visibleEvents(user));
     if(res[0]){
         res[0].type = 'Announcement';
         return res[0];
@@ -355,7 +359,7 @@ export async function getAnnouncement(user, messageID){
 
 export async function getEvent(user, messageID){
     let res = await knex.select().from('events').where('id', messageID)
-    .whereIn('id', await selectors.visibleEvents(user));
+        .whereIn('id', await selectors.visibleEvents(user));
     if(res[0]){
         res[0].type = 'Event';
         return res[0];
@@ -365,7 +369,7 @@ export async function getEvent(user, messageID){
 
 export async function getPrivatePost(user, messageID){
     let res = await knex.select().from('private_posts').where('id', messageID)
-    .whereIn('id', await selectors.visiblePrivatePosts(user));
+        .whereIn('id', await selectors.visiblePrivatePosts(user));
     if(res[0]){
         res[0].type = 'PrivatePost';
         return res[0];
@@ -462,29 +466,29 @@ export async function visibleMessages(user, messageID){
 export async function getMessageAuthor(user, messageID){
     let GroupAuthors = await getGroupsFromCallbacks(user, qb  => {
         return qb.select({uid: 'group'}).from('group_message_relationships')
-          .where('message', messageID).whereIn('status', ['host', 'publish'])
-        })
-    let authorObject = Object()
+            .where('message', messageID).whereIn('status', ['host', 'publish']);
+    });
+    let authorObject = Object();
     if(GroupAuthors.length == 1)
-        authorObject.singleGroup = GroupAuthors[0]
+        authorObject.singleGroup = GroupAuthors[0];
     else
-        authorObject.multipleGroups = GroupAuthors
+        authorObject.multipleGroups = GroupAuthors;
 
-    return authorObject
+    return authorObject;
 }
 
 export async function getMessageRecipient(user, messageID){
     let GroupReciepients = await getGroupsFromCallbacks(user, qb  => {
         return qb.select({uid: 'group'}).from('group_message_relationships')
-          .where('message', messageID).where('status', 'recieve')
-        })
-    let recipientObject = Object()
+            .where('message', messageID).where('status', 'recieve');
+    });
+    let recipientObject = Object();
     if(GroupReciepients.length == 1)
-        recipientObject.singleGroup = GroupReciepients[0]
+        recipientObject.singleGroup = GroupReciepients[0];
     else
-        authorObject.multipleGroups = GroupReciepients
+        recipientObject.multipleGroups = GroupReciepients;
 
-    return recipientObject
+    return recipientObject;
 }
 
 /**
diff --git a/src/graphql/resolvers.js b/src/graphql/resolvers.js
index d61fa74664e94514ba6532f18da04d3bd3056ae4..b336be3e6418df8bd3d255bbc60dbafb7f769682 100644
--- a/src/graphql/resolvers.js
+++ b/src/graphql/resolvers.js
@@ -324,7 +324,17 @@ export const resolvers = {
     // @rights viewer(obj.uid)
     SimpleGroup: {
         
-        members: (obj, args, context) => {
+        admins: async function(obj, args, context){
+            let user = await authentifiers.member(context.user, obj.uid);
+            return user.ldap_access.listMembers(context.user,obj.uid);
+        },
+
+        members: async function(obj, args, context){
+            let user = await authentifiers.member(context.user, obj.uid);
+            return user.ldap_access.listMembers(context.user,obj.uid);
+        },
+
+        likers: async function(obj, args, context){
             return connectors.utilisateur.listMembers(context.user,obj.uid);
         }
     },
diff --git a/src/graphql/typeDefs/objects.js b/src/graphql/typeDefs/objects.js
index 02166d2f6958441ae4d683cc6e06042d73b0e36b..673466e1ed8c17706cbe642df96cefbdaa20e7f6 100644
--- a/src/graphql/typeDefs/objects.js
+++ b/src/graphql/typeDefs/objects.js
@@ -64,8 +64,11 @@ const Group = `
         createdAt: String!
         updatedAt: String!
 
-        # Membres du groupe
+        # Admin, membres, sympathisants du groupe
+        admins: [User]
         members: [User]
+        likers: [User]
+
         description: String
         # École d'origine du groupe
         school: String