From 1bb29ad8959589d23c7d78990f167bb4550cef48 Mon Sep 17 00:00:00 2001
From: Oliver Facklam <oliver.facklam@polytechnique.edu>
Date: Sat, 9 Mar 2019 11:08:11 +0100
Subject: [PATCH] Corrections

---
 README.md                   |  8 ++++----
 jsdoc_config.json           |  2 +-
 src/ldap/internal/basics.ts | 15 ++++++++-------
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/README.md b/README.md
index 14c8032..9761481 100644
--- a/README.md
+++ b/README.md
@@ -239,7 +239,7 @@ Donc, lancer `npm run watch` dans un terminal et `npm run start` dans un autre p
 
 ## Panneau d'administration
 
-Il est accessible par navigateur au path `/adminview/admin` ; n'importe quel path devrait rediriger dessus. 
+Il est accessible par navigateur au path [/adminview/admin](localhost:3000/adminview/admin) ; n'importe quel path devrait rediriger dessus. 
 
 L'accès y est protégé par une page d'authentification, les identifiants à utiliser sont ceux de Frankiz. 
 Le hruid (i.e. prenom.nom) de l'utilisateur doit de plus être sur une whitelist des hruid autorisés. Pour l'instant cette whitelist est hardcodée dans le code source.
@@ -247,12 +247,12 @@ Le hruid (i.e. prenom.nom) de l'utilisateur doit de plus être sur une whitelist
 ### Accès direct à la BDD
 
 Le panneau d'administration sert (ou plutôt, servira à terme) à accéder directement à la BDD propre de sigma, grâce à une API REST. Autrement dit : 
-- on accède à la table `table_name` par une requête GET à `/adminview/db/table_name`'
-- et aux colonnes `columns` de cette table par une requête GET à `/adminview/db/table_name?columns=columns`.
+- on accède à la table `table_name` par une requête GET à [adminview/db/table_name](localhost:3000/adminview/db/table_name),
+- et aux colonnes `columns` de cette table par une requête GET à [/adminview/db/table_name?columns=columns](localhost:3000//adminview/db/table_name?columns=columns).
 
 ### GraphQL Voyager
 
-L'application Voyager, accessible à `/adminview/voyager`, permet de visualiser le « graphe » sous-jacent à la structure de l'API.
+L'application Voyager, accessible à [/adminview/voyager](localhost:3000/adminview/voyager), permet de visualiser le « graphe » sous-jacent à la structure de l'API.
 
 ### GraphQL Playground
 
diff --git a/jsdoc_config.json b/jsdoc_config.json
index e668b8c..db17ea2 100644
--- a/jsdoc_config.json
+++ b/jsdoc_config.json
@@ -28,6 +28,6 @@
       "extensions": ["ts", "tsx"],
       "babelrc": false,
       "presets": [["@babel/preset-env", { "targets": { "node": "current" } }], "@babel/typescript"],
-      "plugins": ["@babel/proposal-class-properties", "@babel/proposal-object-rest-spread"]
+      "plugins": ["@babel/plugin-proposal-class-properties", "@babel/proposal-object-rest-spread"]
     }
 }
\ No newline at end of file
diff --git a/src/ldap/internal/basics.ts b/src/ldap/internal/basics.ts
index 97dd626..96824ac 100644
--- a/src/ldap/internal/basics.ts
+++ b/src/ldap/internal/basics.ts
@@ -161,10 +161,11 @@ export class Basics {
      * @summary Fonction qui interroge le LDAP selon un protocole spécifié en argument et renvoit les valeurs trouvées.
      * @desc Cette fonction utilise ldapjs (voir [`Client API`](http://ldapjs.org/client.html) méthode search). Cette fonction fait une demande au LDAP
      * qu'elle filtre selon un schéma prédéfini dans `filter` et à chaque résultat (event SearchEntry) le met dans une liste, et renvoit la liste à l'issue (event end).
-     * @arg {string} dn - DN de l'emplacement de la requête
-     * @arg {string} filter ["(objectClass=*)"] - Filtre logique de la recherche (format [`RFC2254`](https://tools.ietf.org/search/rfc2254)) déjà passé au ldapEscape
+     * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur)
      * @arg {string[]} attributes - Liste des attributs qui figureront dans le résultat final ; peut aussi être un seul élément
-     * @return {(Promise(Array.<Object>)|Promise(Array.Object.<string, Object>))} Résultats de la recherche ; soit une liste de valeurs d'attributs, 
+     * @arg {string} id [null] - Identifiant facultatif pour une recherche triviale en o(1)
+     * @arg {string} filter ["(objectClass=*)"] - Filtre logique de la recherche (format [`RFC2254`](https://tools.ietf.org/search/rfc2254)) déjà passé au ldapEscape
+     * @return {Promise(Array<dic>)} Résultats de la recherche ; soit une liste de valeurs d'attributs,
      * soit une liste de dictionnaires si on veut plus d'un attribut (les clés du dictionnaire sont celles du LDAP)
      * @static
      * @async
@@ -187,9 +188,9 @@ export class Basics {
      * @arg {'gr'|'us'} domain - Emplacement de la requête (groupe ou utilisateur)
      * @arg {string} id - Identifiant unique de la feuille à modifier ; passé par ldapEscape dans cette fonction
      * @arg {"add"|"del"|"replace"} op - Operation à réaliser sur le LDAP. Trois opération sont possibles ; "add", qui rajoute des attributs et qui peut créer des doublons,
-     * "del" qui en supprime, et "replace" qui remplace du contenu par un autre. 
-     * @arg {Object.<string, string>} mod - Dictionnaire contenant les attributs à modifier et les nouvelles valeurs des attributs.
-     * @arg {Object} mod[key] - Nouvelle valeur de l'attribut key. Une nouvelle valeur vide ("") est équivalent à la suppression de cet attribut.
+     * "del" qui en supprime, et "replace" qui remplace du contenu par un autre.
+     * @arg {dic} mod - Dictionnaire contenant les attributs à modifier et les nouvelles valeurs des attributs.
+     * @arg {string} mod[key] - Nouvelle valeur de l'attribut key. Une nouvelle valeur vide ("") est équivalent à la suppression de cet attribut.
      * @return {Promise(boolean)} `true` si la modification s'est bien déroulée, `false` sinon.
      * @static
      * @async
@@ -201,7 +202,7 @@ export class Basics {
         dn+='='+ldapEscape.dn("${txt}", { txt: id })+','+ldapConfig.dn[domain];
         // Modification LDAP selon dn fourni en argument (pourrait prendre une liste de Changes)
         client.modify(ldapEscape.dn("${txt}", {txt: dn}), new ldap.Change({
-            operation: ldapEscape.dn("${txt}", {txt: op}),
+            operation: op,
             modification: mod,
         // Gestion erreur 
         }), err => { throw "Erreur lors d'une opération de modification sur le LDAP."; });
-- 
GitLab