From 805b41f00ba4f48cc5ad0827b7bd1d00542cbdde Mon Sep 17 00:00:00 2001
From: anatole <anatole.romon@polytechnique.edu>
Date: Fri, 2 Mar 2018 11:44:31 +0100
Subject: [PATCH] modifs legeres de serveur

---
 src/graphql/schema.js | 36 +++++++++++++++++++++++++++++++++---
 src/server.js         |  1 -
 2 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/src/graphql/schema.js b/src/graphql/schema.js
index aa955ac..ff96737 100644
--- a/src/graphql/schema.js
+++ b/src/graphql/schema.js
@@ -28,7 +28,7 @@ const getUsersWithAdminRights = (user, groupUID) => {
                         return adminList.concat(parentAdmins);
                     });
                 else
-                    return adminList;
+                    return adminList.concat(['anatole.romon']); // pour les besoins des tests, anatole romon a tout les droits
             });
     });
 };
@@ -52,6 +52,7 @@ const hasAdminRights = (user, groupuid) => {
  * @return {Promise} Retour de requête knex. Liste de tous les groupes que l'utilisateur a le droit de voire.
  */
 const getAllVisibleGroups = (user) => {
+    console.log(user);
 
     return listerGroupes(user, user.uid).then(group_ids => {
         if(typeof group_ids == "undefined")
@@ -101,8 +102,37 @@ const getAvailableGroupUID = (initialUID) => {
     });
 };
 
-const createGroup = (user, args) => {
-
+/**
+ * @summary Créé un groupe si les arguments sont tous valides
+ * @desc Les arguments doivent être valides, sauf pour uid. Une clé uid valide sera générée dans tous les cas. 
+ * Les authorisations de l'utilisateur ne sont pas vérifiées
+ * On teste si l'utilisateur qui envoie la requête a des droits d'admin sur le parent du groupe qui doit être créé, avec la fonction *getUsersWithAdminRights*
+ * Si un argument est invalide ou si l'utilisateur n'a pas les droits, la fonction renvoie une erreur
+ * @arg {Object} user - L'utilisateur qui effectue la requête. 
+ * @arg {Object} args - Les arguments envoyés à la mutation. Cf le schéma GraphQL 
+ * @return {Promise} Retour de requête knex. Le groupe qui vient d'être créé. En cas d'echec, renvoie une erreur.
+ */
+const createSubroup = (user, args) => {
+    if(typeof args.parentuid != 'string')
+        throw "Illegal argument : parentuid must be a non null string";
+    if(typeof args.name != 'string')
+        throw "Illegal argument : name must be a non null string";
+    
+    return(getAvailableGroupUID(args.uid).then(rasUID => {
+        // TODO : appeller une fonction de ldap_data pour y créer un groupe.
+        return knex('groups').insert({
+            uid : rasUID,
+            parentuid : args.parentuid,
+            createdAt : knex.fn.now(),
+            updatedAt : this.createdAt,
+            name : args.name,
+            website : args.website,
+            description : args.description,
+            school : args.school
+        }).then( res => {
+            return getGroupIfVisible(user, rasUID);
+        });
+    })); 
 }
 
 /**
diff --git a/src/server.js b/src/server.js
index 023691d..bb26e72 100644
--- a/src/server.js
+++ b/src/server.js
@@ -50,7 +50,6 @@ server.use('/graphql', bodyParser.json(), cors(),
         let password;
         
         try {
-            console.log(req.session);
             uid = req.session.passport.user.uid;
             password = "mythe";
         } catch (err) {
-- 
GitLab