* @summary Fonction essentielle qui permet d'ajouter un utilisateur à une catégorie d'un groupe.
* @summary Fonction essentielle qui permet d'ajouter un utilisateur à une catégorie d'un groupe.
* @desc Cette fonction fait essentiellement appel à d'autres fonctions de {@link Tools} ; {@link Tools.addIfNotPresent} et {@link Tools.manageInclusions}.
* @desc Cette fonction fait essentiellement appel à d'autres fonctions de {@link Tools} ; {@link Tools.addIncluded} et {@link Tools.addIfAbsent}.
* Puis elle gère en interne la récursion et utilise {@link LDAP.change} pour cela.
* Elle utilise {@link LDAP.addDFS} pour gèrer la récursion.
* @arg {string} uid - Identifiant du futur membre
* @arg {string} uid - Identifiant du futur membre
* @arg {string} gid - Identifiant du groupe
* @arg {string} gid - Identifiant du groupe
* @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné (admin, speaker, member ou follower)
* @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné au type non contraint mais en pratique limité
* @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon
* @return {Promise(boolean)} `true` si la modification s'est bien déroulée, false sinon
* @async
* @async
* @static
* @static
...
@@ -261,8 +261,8 @@ export class Tools {
...
@@ -261,8 +261,8 @@ export class Tools {
/**
/**
* @memberof LDAP
* @memberof LDAP
* @summary Fonction intermédiaire naïve.
* @summary Fonction intermédiaire naïve qui supprime une entrée d'une feuille si elle y existe.
* @desc Cette fonction enlève 2 d'1 pour un des deux arbres si cette entrée n'était pas déjà absente.
* @desc Cette fonction enlève 2 d'1, feuille d'un des deux arbres si cette entrée y existe.
* La symétrie entre 1 et 2 est voulue et permet de gérer indifférement l'ajout d'un individu dans un groupe ou d'un groupe à un individu.
* La symétrie entre 1 et 2 est voulue et permet de gérer indifférement l'ajout d'un individu dans un groupe ou d'un groupe à un individu.
* @arg {string} id1 - uid/gid
* @arg {string} id1 - uid/gid
* @arg {"group"|"user"} domain1 - Arbre concerné pour l'id1
* @arg {"group"|"user"} domain1 - Arbre concerné pour l'id1
...
@@ -299,12 +299,12 @@ export class Tools {
...
@@ -299,12 +299,12 @@ export class Tools {
/**
/**
* @memberof LDAP
* @memberof LDAP
* @summary Fonction intermédiaire.
* @summary Fonction intermédiaire de suppression des droits obtenus par inclusion.
* @desc Cette fonction gère les inclusions de droits. Elle ne rajoute pas un admin pour les admins, mais elle le rajoute en tant que speaker.
* @desc Cette fonction gère les inclusions de droits, et donc les rétrogadations. Elle ne supprime pas un admin pour les admins, mais le rajoute en tant que speaker.
* Cette fonction appelle {@link remove} directement pour vraiment éliminer le personnage.
* Cette fonction appelle {@link remove} directement pour vraiment éliminer le personnage des rôles inclus et {@link add} pour vraiment le rajouter.
* @arg {string} uid - uid de l'utilisateur à ajouter
* @arg {string} uid - uid de l'utilisateur à ajouter
* @arg {string} gid - gid du groupe concerné
* @arg {string} gid - gid du groupe concerné
* @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné (admin, speaker, member ou follower)
* @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné
* @return {Promise(boolean)} `true` si la modification s'est bien déroulée, `false` sinon
* @return {Promise(boolean)} `true` si la modification s'est bien déroulée, `false` sinon
* @summary Fonction qui permet de supprimer un membre d'une catégorie existant d'un groupe.
* @summary Fonction qui permet de supprimer un membre d'une catégorie existant d'un groupe.
* @desc Cette fonction fait essentiellement appel à d'autres fonctions de {@link Tools} passées en argument et {@link LDAP.change}.
* @desc Cette fonction fait essentiellement appel à d'autres fonctions de {@link Tools} passées en argument et {@link LDAP.change}.
* Elle essaie d'assurer les propriétés d'inclusion et de récursion du LDAP. Elle est sans effet pour un admin hérité.
* Elle essaie d'assurer les propriétés d'inclusion et de récursion du LDAP (voir {@link remDFS} pour la récursion). Elle est sans effet pour un admin hérité.
* Le comportement est étrange pour la suppression d'un membre hérité ; le membre est supprimé du groupe et des groupes parents, mais pas du groupe à l'origine de l'héritage.
* Le comportement est étrange pour la suppression d'un membre hérité ; le membre est supprimé du groupe et des groupes parents, mais pas du groupe à l'origine de l'héritage.
* @arg {string} uid - Identifiant de l'ex-membre
* @arg {string} uid - Identifiant de l'ex-membre
* @arg {string} gid - Identifiant du groupe
* @arg {string} gid - Identifiant du groupe
* @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné (admin, speaker, member ou follower)
* @arg {"admins"|"speakers"|"members"|"followers"} category - Categorie de l'utilisateur concerné au type non contraint mais en pratique limité
* @return {Promise(boolean)} `true` si la modification s'est bien déroulée, `false` sinon
* @return {Promise(boolean)} `true` si la modification s'est bien déroulée, `false` sinon