diff --git a/src/graphql/models/requestModel.ts b/src/graphql/models/requestModel.ts
index 0eeff5b63ffc8919021f5f8876157eeae9c68e2f..434677f728da59d3f8b9f1754346d9824cb1d3c7 100644
--- a/src/graphql/models/requestModel.ts
+++ b/src/graphql/models/requestModel.ts
@@ -136,7 +136,8 @@ export class RequestModel {
      * @rights viewer du groupe
      */
     async userRequestJoinGroup(gid: string, comment: string): Promise<UserJoinGroup> {
-        throw "Not implemented";
+        let res = await knex("requests_user_join_group").insert({request_to : gid, request_from : this.contextUser, request_comment : comment}, ['rid']);
+        return this.getUserJoinGroupRequest(res[0]["rid"]);
     }
 
     /**
@@ -154,6 +155,8 @@ export class RequestModel {
     async groupRequestCoauthorEvent(from_gid: string, to_gid: string, event_mid: number, comment: string): Promise<GroupCoauthorEvent> {
         //TODO : Vérifier que l'évenement est bien organisé par le groupe destinataire (to_gid) !!! => sinon erreur
         throw "Not implemented";
+        let res = await knex("requests_group_coauthor_event").insert({request_to : to_gid, request_from : from_gid, request_comment : comment, for_event : event_mid}, ['rid']);
+        return this.getGroupCoauthorEventRequest(res[0]["rid"]);
     }
 
     /**
@@ -168,7 +171,8 @@ export class RequestModel {
      * @rights admin du groupe émetteur
      */
     async groupRequestJoinMetagroup(from_gid: string, to_gid: string, comment: string): Promise<GroupJoinMetagroup> {
-        throw "Not implemented";
+        let res = await knex("requests_group_join_metagroup").insert({request_to : to_gid, request_from : from_gid, request_comment : comment}, ['rid']);
+        return this.getGroupJoinMetagroupRequest(res[0]["rid"]);
     }
 
     /**
diff --git a/src/graphql/resolvers.ts b/src/graphql/resolvers.ts
index 2322608aec6bb2697f085d4cf220249da3c56272..4d87f18428aa8fdf2edef6d12e531cba40f13a51 100644
--- a/src/graphql/resolvers.ts
+++ b/src/graphql/resolvers.ts
@@ -109,7 +109,7 @@ export const resolvers = {
         // @rights admin du groupe destinaire ou le user émetteur
         userJoinGroupRequest: async function (root, args, context: Context): Promise<UserJoinGroup> {
             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) {
+            if(!r || 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");
@@ -118,7 +118,7 @@ export const resolvers = {
         // @rights admin du groupe émetteur ou destinataire
         groupJoinMetagroupRequest: async function (root, args, context: Context): Promise<GroupJoinMetagroup> {
             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)) {
+            if(!r || 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");
@@ -127,7 +127,7 @@ export const resolvers = {
         // @rights admin du groupe émetteur ou destinataire
         groupCoauthorEventRequest: async function (root, args, context: Context): Promise<GroupCoauthorEvent> {
             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)) {
+            if(!r || 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");