diff --git a/src/graphql/object_resolvers/requests.ts b/src/graphql/object_resolvers/requests.ts
index 7c1a2c510fa6ca31501d28731781a3eaaa130e3a..98cec7f370dfca66f89268782eeff681bc029546 100644
--- a/src/graphql/object_resolvers/requests.ts
+++ b/src/graphql/object_resolvers/requests.ts
@@ -1,5 +1,5 @@
 /**
- * @file Resolvers pour tous les types de messages
+ * @file Resolvers pour tous les types de requetes
  * @author akka, ofacklam
  */
 
@@ -398,7 +398,7 @@ export class GroupCoauthorEvent extends Request {
      */
     async from(args, context: Context, info): Promise<Group> {
         await this.fetchData();
-        throw "Not implemented";
+        return new SimpleGroup(this.m_from);
     }
 
     /**
@@ -411,7 +411,7 @@ export class GroupCoauthorEvent extends Request {
      */
     async to(args, context: Context, info): Promise<Group> {
         await this.fetchData();
-        throw "Not implemented";
+        return new SimpleGroup(this.m_to);
     }
 
     /**
@@ -426,6 +426,10 @@ export class GroupCoauthorEvent extends Request {
         await this.fetchData();
         throw "Not implemented";
         //a-t-il le droit de voir ???
+        // On suppose que s'il a accès à la requête, c'est que :
+        // - Soit il est dans le groupe organisateur : RAS
+        // - Soit il l'a postée, et donc avait le droit de voir l'event : RAS
+        // - Soit un autre admin du groupe émetteur a posté la requête, mais tous les admins n'ont pas forcément le droit de voir l'event...
         return new Event(this.m_forEvent);
     }
 }
\ No newline at end of file
diff --git a/src/graphql/resolvers.ts b/src/graphql/resolvers.ts
index 9f3a0a55f2d20874c69b86b600900b465c6483a5..2322608aec6bb2697f085d4cf220249da3c56272 100644
--- a/src/graphql/resolvers.ts
+++ b/src/graphql/resolvers.ts
@@ -108,26 +108,29 @@ export const resolvers = {
 
         // @rights admin du groupe destinaire ou le user émetteur
         userJoinGroupRequest: async function (root, args, context: Context): Promise<UserJoinGroup> {
-            //TODO : verifier les autorisations
-            throw "Not implemented";
-            return context.models.request.getUserJoinGroupRequest(args.rid);
-            throw new AuthenticationError("Not connected or on-platal");
+            let r = await context.models.request.getUserJoinGroupRequest(args.rid);
+            if(context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.getUid() == (await r.from(args, context, "")).uid) {
+                return r;
+            }
+            throw new AuthenticationError("Not an admin");
         },
 
         // @rights admin du groupe émetteur ou destinataire
         groupJoinMetagroupRequest: async function (root, args, context: Context): Promise<GroupJoinMetagroup> {
-            //TODO : verifier les autorisations
-            throw "Not implemented";
-            return context.models.request.getGroupJoinMetagroupRequest(args.rid);
-            throw new AuthenticationError("Not connected or on-platal");
+            let r = await context.models.request.getGroupJoinMetagroupRequest(args.rid);
+            if(context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.isAdmin((await r.from(args, context, "")).gid)) {
+                return r;
+            }
+            throw new AuthenticationError("Not an admin");
         },
 
         // @rights admin du groupe émetteur ou destinataire
         groupCoauthorEventRequest: async function (root, args, context: Context): Promise<GroupCoauthorEvent> {
-            //TODO : verifier les autorisations
-            throw "Not implemented";
-            return context.models.request.getGroupCoauthorEventRequest(args.rid);
-            throw new AuthenticationError("Not connected or on-platal");
+            let r = await context.models.request.getGroupCoauthorEventRequest(args.rid);
+            if(context.models.auth.isAdmin((await r.to(args, context, "")).gid) || context.models.auth.isAdmin((await r.from(args, context, "")).gid)) {
+                return r;
+            }
+            throw new AuthenticationError("Not an admin");
         },
 
         // Tous les Messages visibles par un utilisateur(dont le uid, et donc les autorisations, est passé par context)
@@ -360,7 +363,7 @@ export const resolvers = {
             throw new AuthenticationError("Not a speaker");
         },
 
-        // @rights speaker du groupe émetteur
+        // @rights speaker d'un groupe auteur
         editEvent: async function (root, args, context: Context): Promise<Event> {
             throw "Not implemented";
             // TODO : Vérifier les autorisations.
@@ -374,7 +377,7 @@ export const resolvers = {
             throw new AuthenticationError("Not a speaker");
         },
 
-        // @rights speaker du groupe émetteur
+        // @rights speaker d'un groupe auteur
         removeEvent: async function (root, args, context: Context): Promise<boolean> {
             throw "Not implemented";
             // TODO : Vérifier les autorisations