diff --git a/README.md b/README.md index 14c80321a9e14b52d292f0ad0fd2c1c88a881021..9761481ea39370de2ba6bf3af82789bb08238419 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 e668b8cd04e0622fd08cea637139f7dbeff03647..db17ea21c1eb810aaa1654bcf998ecfc4e16504e 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 97dd6267c0de2d098a08e42457d677ecc76140cd..96824ac4e64d07b21490bfd4fa84aad7dd4d1470 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."; });