Arbres et groupes
Ce document présente la notion d'Arbres & Groupes. L'objectif est définir quelle partie de l'annuaire dépend de données externes (par synchronisation), et quelle autre non. Une autre fonctionnalité est de déterminer les objets autorisés dans une branche (par exemple que des personnes dans la branche ou=Personnes).
Introduction et définition
Définitions des arbres
Type d’arbre :
- lié
- mixte
- libre
- semi-libre
- de type Personnes
- de type Autre
Définitions :
- Arbre : ensemble de nœuds inférieur à un nœud de référence.
- Arbre lié : arbre dans lequel les nœuds sont renseignés par des sources externes via des mécanismes d’imports initiaux ou périodiques. (Un nœud lié est donc un nœud d’un arbre lié).
- Arbre libre : arbre sans partie liée, également : arbre dans lequel les nœuds sont renseignés par les actions des utilisateurs via les composants Web ou les échanges DSML. (Un nœud libre est donc un nœud d’un arbre libre).
- Arbre mixte : arbre contenant un certain nombre de niveaux de nœuds liés suivi par des niveaux de nœuds semi-libres. Un nœud mixte est un nœud lié à la limite de la partie liée et de la partie semi-libre de l’arbre mixte.
- Arbre semi-libre : prolongement libre d’un arbre lié, sous-arbre sous le nœud mixte. Dans un arbre libre, les feuilles peuvent être des liens (de personne ou de sous-arbre) de n’importe quel arbre de l’annuaire. Dans un arbre semi-libre, les feuilles ne peuvent venir que du nœud mixte : les feuilles restent dans le sous-arbre initié par migration à partir de sources externes, donc sous le même nœud mixte qu’à leur création. (Concrètement, dans un arbre semi-libre, prolongement d’un arbre lié, on ne peut être inscrit qu’à un niveau de décomposition plus fine de son inscription d’origine).
Il n’y a pas de sous-arbre mixte.
Dans un arbre libre, on peut créer un lien de personne ou de sous-arbre. Cette caractéristique donnera à un nœud d’arbre la qualité de nœud d’arbre inscriptible.
Les nœuds libres sont des nœuds inscriptibles.
On peut dans certains cas, où l’on souhaite créer directement des entrées de personne dans l’annuaire, créer simultanément l’entrée correspondante dans ou = Personnes si elle n’existe pas. Cette caractéristique donnera à un nœud d’arbre inscriptible la qualité de nœud d’arbre inscripteur.
On peut utiliser cette caractéristique pour tout nœud d’arbre que l’on souhaite.
Périmètre
Ne sont gérés par les règles suivantes que les sous-arbres de personnes, c’est à dire des arbres qui contiennent uniquement des feuilles de type :
- lien vers une personne : alias de l’uid d’une entrée de personne (ou=Personnes) (objet d’une classe dérivant de la classe alias ldap, mais pas un attribut administrateur, membre, responsable, ...)
- lien vers un sous-arbre de personnes via un TODO smart referral (expliquer) LDAP de l’annuaire sur lui-même
- entrée de personne (ou=Personnes)
Conséquence
À partir du moment où un nœud est une racine d’arbres de personnes, l’ensemble de la sous-arborescence contient uniquement des nœuds racines d’arbres de personnes (aucun nœud d’un autre type comme ACL, Groupes, une partie de l’arbre Application)
Objet de l’étude
Arbres et Groupes se décomposent en deux parties :
- une partie moteur de vérification (autorisation) de la consultation, de la modification, ainsi que de la création des Arbres et des Groupes.
- une partie composants intelligents fournissant de l’information à la consultation et à la création des Arbres et des Groupes, cette deuxième partie étant indépendante sous forme de composant interrogeable en XML par la couche de consultation et de mise à jour.
Étude des arbres mixtes
Attribut nouveauNoeud
Un nouveau schéma (attribut nouveauNoeud), précisé à la limite de la partie liée d’un arbre mixte, est le schéma pour la création du sous-arbre semi-libre. Il permet, via l’analyse du schéma de l’entrée existante ainsi que du nouveau schéma, de définir l’héritage des attributs de la partie liée vers les attributs de la partie semi-libre. Il contient uniquement la/les classe(s) d’objet applicable(s) à tout le sous-arbre.
À toute création de sous-arbre, le nœud racine du nouveau sous-arbre (c’est à dire le nœud mixte) doit contenir un attribut supplémentaire correspondant à la partition éventuelle du sous-arbre (pas plus d’une inscription par personne dans les sous-arbres directs, partition = oui / non).
Le nouveau schéma contiendra un attribut précisant la possibilité pour les feuilles du niveau supérieur de se déplacer dans ce sous-arbre (autoInscription = oui / non).
Type de transition par attributs
Quelque soit la transition, c’est la classe d’objet du nœud créé qui est appliquée. La comparaison des schémas nous sert uniquement à renseigner ou générer les valeurs de attributs selon les règles ci-dessous.
Note : Possibilité de changer la cardinalité d’un même attribut ( mono -> multi , ..) : NON
Copie / déplacement
Lors du mouvement d’une personne, un sous-arbre à partition implique que le lien est déplacé ; alors qu’un sous-arbre sans partition implique une copie.
Les héritages
Tableau des héritages
TODO
Synthèse
- Attribut de départ existe et arrivée modifiable ou obligatoire => reconduire
- Attribut de départ n’existe pas (forcément Optionnel) :
- Proposer (valeur par défaut) si destination modifiable
- Générer si destination non modifiable (obligation de génération non vide)
- Attribut d’arrivée optionnel / Non modifiable : non reconduit (=vide)
Note sur les éléments de présentation liés à la classe d’objet du nœud créé :
- Arrivée obligatoire => non supprimable
- Arrivée optionnelle et modifiable => champs de saisie
- Arrivée optionnelle et non modifiable => sélection (présence / absence)
L’ensemble des règles d’héritage fonctionne à égalité des noms d’attributs ; elles peuvent être entièrement déduites des schémas de départ et d’arrivée.
Remarque sur les limitation du schéma LDAP pour l’enregistrement de toutes les caractéristiques des attributs
Dans tout le processus d’héritage, nous avons besoin de plusieurs caractéristiques des attributs :
- Obligatoire ou optionnel
- Modifiable ou non
- Mono-valué ou multi-valué
- Valeur par défaut pour générer
Dans le schéma LDAP, seul le caractère obligatoire (MUST) ou optionnel (MAY) peut être modifié entre une classe et une autre pour le même attribut.
La possibilité de modifier ou non un attribut n’existe pas : le NO-USER-MODIFICATION du schéma LDAP empêche toute modification sauf par l'annuaire lui-même, et ne peut donc pas être utilisé ; de plus il est lié à l’attribut lui-même et ne peut pas varier d’une classe à une autre pour un même attribut.
Pas de stockage possible d’une valeur par défaut dans le schéma LDAP.
Attribut invisible
Certains attributs sont nécessaires et doivent être créés au moment des héritages, mais ne doivent pas être visibles de l’utilisateur (par exemple les attributs objectClass).
Schéma enrichi
TODO : lien vers spécifications schéma enrichiToutes les raisons évoquées ci-dessus nous conduisent à enregistrer un schéma enrichi sous forme d’une nomenclature définie à l’intérieur de l’annuaire dans une branche.
Par exemple : ou=schema,ou=configuration,dc=interldap,dc=org.
Ce schéma permettra donc de générer le fichier de schéma à inclure dans le serveur LDAP.
Ce schéma enrichi doit au moins contenir :
- Classe d’objet
- Attribut
- Caractère mono-valué ou multi-valué de l’attribut
- Caractère obligatoire ou non de l’attribut
- Caractère modifiable ou non de l’attribut
- Caractère visible ou non de l’attribut
- Valeur par défaut de l’attribut (si besoin)
Étude des nœuds inscriptibles
Fonctionnalités de création de lien sur un nœud inscriptible
Rappel : un nœud « inscriptible » est un nœud sur lequel on peut donner le droit de créer un lien (de personne ou de sous-arbre de personne).
Un lien inscriptible, précisé sur un nœud inscriptible permet de donner la liste des schémas de liens utilisables pour effectuer la création ; ces schémas dépendent de l’arbre dans lequel on se trouve. L’attribut lienInscriptible, multi-valué doit être renseigné dans tout nœud inscriptible.
TODO Par exemple, dans l’arbre Affectations, lienInscriptible = lienBorneAffectation (cf. Schéma général LDAP : description des classes de lien).Le fait que le lien inscriptible ait plusieurs valeurs implique une demande de choix en création ou en modification.
Un attribut schemaInscriptible multi-valué et optionnel permet de limiter le choix des personnes ; on ne pourra créer de lien que vers des personnes dont le schéma est un des schémas inscriptibles ; cela permet éventuellement de fixer les classes supportées dans un arbre, à partir d’un nœud inscriptible pour tout son sous-arbre. (peut servir pour les Applications ou les Exportations)
L’absence de l’attribut schemaInscriptible implique que toute personne de l’annuaire peut être « inscrite » sous le nœud par un lien de persone ou de sous-arbre.
schemaInscriptible donne une possibilité de filtrage supplémentaire imposé par le nœud d’arbre.
Fonctionnalités de modification à fournir sur un nœud inscriptible
Si le lien existe déjà, il faut donner au créateur le pouvoir de le modifier :
- Changer de lien, si plusieurs types de liens sont possibles
- Changer les attributs modifiables du lien
Étude des nœuds inscripteurs
Fonctionnalités de création d’entrée simultanée sur un nœud inscripteur, et dans ou=Personnes
Rappel : un noeud « inscripteur » est un nœud sur lequel on peut donner le droit de créer un lien de personne (nœud « inscriptible ») et de créer l’entrée correspondante dans ou=Personnes si elle n’existe pas. (1)
Ceci implique de saisir les attributs modifiables et obligatoires du lien et de l’entrée. (1bis)
Si l’entrée existe déjà (personne présente dans l’annuaire), et pas le lien, il faut donner au créateur la possibilité de créer le lien (2) et de saisir ses attributs modifiables. (2bis)
Fonctionnalités de modification à fournir sur un nœud inscripteur
Si l’entrée et le lien existent déjà, il faut donner au créateur le pouvoir de les modifier :
- Changer de lien, si plusieurs types de liens sont possibles. (3)
- Changer les attributs modifiables du lien. (4)
- Changer le schéma de l’entrée dans ou=Personnes. (5)
- Changer les attributs modifiables de l’entrée (au moins ceux qui ont été saisis par le créateur). (6)
Attribut lienInscriptible d’un nœud inscripteur
L’attribut lienInscriptible, multi-valué, précisé sur un nœud inscripteur permet de donner la liste des schémas de liens utilisables pour effectuer la création ; ces schémas dépendent de l’arbre dans lequel on se trouve. L’attribut lienInscriptible, doit être renseigné dans tout nœud inscripteur.
TODO Par exemple, dans l’arbre Affectations, lienInscriptible = lienBorneAffectation (cf. Scéma général LDAP : description des classes de lien).Le fait que le lien inscriptible ait plusieurs valeurs implique une demande de choix en création ou en modification. Permet de renseigner (1) pour le lien, (2) et (3).
Attribut schémaInscripteur d’un nœud inscripteur
Un schéma inscripteur, précisé sur un nœud inscripteur permet de donner la liste des schémas de personnes utilisables pour effectuer la création ; ces schémas dépendent de l’arbre dans lequel on se trouve. L’attribut schemaInscripteur, multi-valué doit être renseigné dans tout nœud inscripteur.
TODO Par exemple dans l’arbre Affectations, schemaInscripteur = personnelUPMC, schemaInscripteur = personnelExterieur, schemaInscripteur = personnelInvite.Cet attribut du lien inscripteur permet de faire choisir le schéma à créer pour la personne ; renseigne (1) pour la personne.
Attribut proposeEnCreation d’un attribut
Une fois le schéma de création de la personne défini, il faut en plus savoir quels sont les attributs à renseigner pour effectuer cette création. Ceci conduit à ajouter un attribut « proposé en création » dans le schéma enrichi des attributs. La valeur de l’attribut proposeEnCreation de chaque attribut doit être mis à « vrai » pour tous les attributs obligatoires d’un schéma sauf ceux qui ont une valeur par défaut, plus ceux que l’on souhaite voir renseignés (y compris s’ils ont une valeur par défaut).
Pour les mêmes raisons, l’attribut proposeEnCreation doit être défini pour les attributs des liens à créer dans le schéma enrichi.
L’utilisation de cet attribut permet de renseigner (1bis), (2bis), 4 et 6.
Cas où l’entrée de la personne existe déjà
Si la personne existe déjà, il faut savoir d’une part si elle peut-être inscrite, et d’autre part si un des schémas inscripteur doit lui être ajouté ou si il faut la changer de schéma.
Si un des schémas de la personne est un des schémas inscripteurs, nous avons la réponse : la personne peut-être inscrite et il faut proposer le choix du schéma inscripteur ; en cas de changement de schéma, il faut faire passer la personne d’un schéma à l’autre : migration de schéma.
Pour savoir si la personne peut être inscrite, on peut utiliser l’attribut schemaInscriptible du nœud (multi-valué): elle peut être inscrite si un de ses schémas est cité par un schemaInscriptible.
NB : En conséquence, si l’attribut est présent, il devrait au moins reproduire l’ensemble des schémas inscripteurs, de façon à ce qu’on retrouve une personne précédemment inscrite.Si un des schémas de la personne est un des schémas inscriptibles, nous avons la réponse : la personne peut-être inscrite et il faut proposer le choix du schéma inscripteur ; il faut alors ajouter le schéma inscripteur à la personne : complétion de schéma.
TODO Par exemple un ‘Personnel UPMC’ ne peut pas être en même temps ‘Personnel Extérieur’ ou ‘Personnel Invité’, par contre il pourrait être ‘Étudiant UPMC’, à condition que les schémas personnelUPMC et etudiantUPMC soient prévus pour cela!, ce qui n’est pas simple, ni pour la fin de validité générale, ni pour l’adresse électronique et pose des problèmes en cas de fin d’une des activités, et aussi de conflit éventuel avec un script de migration ou de ménage.Les règles énoncées ci-dessus permettent de renseigner (5).
Migration de schéma
Une migration de schéma, passage d’un schéma à un autre, implique :
- supprimer les attributs qui n’existent pas dans le schéma d’arrivée
- supprimer les attributs qui ont une valeur incompatible avec une liste de valeurs autorisées dans le schéma d’arrivée
- créer les attributs manquant du nouveau schéma qui ont une valeur par défaut
- proposer en création les attributs du nouveau schéma marqués « proposés en création » et non renseignés (les attributs obligatoires du nouveau schéma doivent en faire partie)
- proposer en modification les attributs modifiables déjà renseignés (attributs qui existent dans les 2 schémas, modifiables dans le nouveau). (attention aux pré-traitements)
Complétion de schéma
Une complétion de schéma, ajout d’un schéma à un autre, soient 1 et 2, implique :
- conserver les attributs de la classe 1 qui n’existent pas dans la classe 2.
- si un attribut commun est multi-valué dans le schéma 2, y conserver la valeur et lui ajouter la valeur schéma 2, après l’avoir déterminée, (valeur par défaut ou saisie)
- proposer en création les attributs du schéma 2 marqués « proposés en création » et non renseignés (les attributs obligatoires du schéma 2 doivent en faire partie)
- proposer en modification les attributs modifiables déjà renseignés (attributs qui existent dans les 2 schémas, modifiables dans le schéma 2).
Il n’y a pas ici toutes les possibilités d’une telle opération, qui est très compliqué, voir insoluble dans certains cas, si on veut la traiter de façon générale : les schémas doivent être prévus pour pouvoir suivre ces règles (prétraitements inclus), or ils sont souvent créés justement pour séparer le traitement des mêmes attributs.
Etudiant-Personnel
TODOUne application de cette inscription provoquant un changement ou un complément de schéma est le cas des étudiants qui sont aussi personnel.
Contraintes :
- la solution adoptée doit résister aux scripts de migration
- la solution adoptée doit permettre le retour au statut étudiant pur, ou le passage au statut personnel pur (pb des fins de validité, des emails, …)
Trois pistes possibles :
- Complétion de schéma : une entrée avec la classe étudiantUPMC plus une des classes personnel, deux employeeType, etc…
- Avantage : résiste aux sélections sur schéma et employeeType
- Inconvénient : oblige à modifier les scripts d’import et de ménage, et surtout tout les pré et post-traitements des emails.
- Migration de schéma vers une nouvelle classe etudiantPersonnel
- Avantages : possibilité d’attributs et de traitements spécifiques en plus
- Inconvénients : perd les sélections sur schéma (ou les anticiper partout : il faudrait mieux alors une classe personnelEtudiant.
- Garder deux entrées avec même identifiant externe et même mot de passe
- Avantage : ne touche pas les liens existants, ni les scripts de migration et ménage, ou très peu
- Gros inconvénients : la même personne deux fois dans l’annuaire avec en plus des informations qui peuvent diverger ; => donner possibilité de changer l’identifiant externe
Exemple : création d’une entrée de personne par un groupe responsable
TODODescription : Une personne authentifiée appartenant à un groupe responsable peut inscrire directement une personne (personnel) dans l’annuaire.
Règle :
La personne qui effectue la saisie doit appartenir au groupe responsable d’un nœud inscripteur (concrètement dans les Affectations, nous attribuerons la classe noeudInscripteur aux nœuds mixtes, frontières entre la partie liée et la partie semi-libre de l’arbre ; autrement dit aux derniers niveaux de structure officiels).
La personne qui effectue la saisie doit définir la catégorie de personne, à partir des schémas inscriptibles des personnels (personnelUPMC, personnelExterieur, ou personnelInvite).
Ces schémas devront donc être les valeurs des attributs schemaInscripteur du nœud inscripteur.
Elle doit saisir :
- L'ensemble des champs Obligatoires de la fiche "Personne" d’un personnel à l'exception des suivants qui prennent leur valeur par défaut:
- Liste Rouge
- Diffusion Photo
- Diffusion telephone personnel.
- Les N° de téléphone et de télécopie
- L'adresse électronique de délivrance du courrier.
- Contacter en cas d'absence.
- L'adresse postale (en suggérant l'adresse du service).
Tous les attributs ci-dessus doivent donc posséder l’attribut proposeEnCreation = TRUE dans les classes de personnes en question.
- L'activité de la personne (qui se retrouvera dans le lien et dans la fiche de la personne).
Ce dernier point nécessite que le lienBorneAffectation soit valeur de lienInscriptible du nœud inscripteur, et que l’attribut activite de la classe lienBorneAffectation possède dans le schéma enrichi l’attribut proposeEnCreation.
L'entrée est créée dans l'arbre ou=Personnes, et un lien vers cette entrée est créé dans l'arbre ou=Affectations, à l'endroit ou se trouve le créateur.
L’attribut gereParHarpege de la personne doit être positionné à FALSE. Cet attribut ne peut être modifié que par la migration du personnel. (il ne doit donc pas posséder l’attribut proposeEnCreation, mais prendre sa valeur par défaut).
Description des schémas communs aux différents arbres
TODO voir schéma général LDAP
Description des schémas de l’arbre IP
TODO voir schéma général LDAP
Description des schémas de l’arbre des Affections
TODO voir schéma général LDAP
Description des schémas de l’arbre des Applications
TODO voir schéma général LDAP
Définition des droits sur les Arbres et les Groupes
Rappel : Tout groupe responsable parent dispose du même droit que le groupe responsable directement attaché au nœud (parent = attaché à un nœud de niveau supérieur dans l’arbre)
Droit basique des feuilles d’un arbre de personnes
[Géré par le module AACLS>Main.AACLs]
Droit basique des feuilles sur les autres feuilles
Par feuille, il faut entendre : lien vers une personne accroché à la feuille d’arbre.
Vis à vis de l’annuaire, nous devons donner à chacune des feuilles le droit de voir les photos des autres feuilles, de leur envoyer à toutes un message, de voir un certains nombre d’informations non ouvertes au public, dont la liste et le critère de sélection sont à définir. Ces droits sont définis par des règles [AACLs>Main.AACLs] associant un acteur et une cible au même niveau direct (c’est à dire les feuilles d’un même nœud parent).
Le droit basique pour les feuilles ne s’applique que pour leur niveau et seulement dans les arbres non libres (
TODO IP et Affectations).
Les arbres libres doivent être exclus du droit « basique », car les sous-arbres de personnes associés à un nœud libre peuvent être très grands, voir englober toutes les personnes (par exemple pour une application de consultation assez générale, il peut y avoir un lien d’arbre depuis un nœud de l’arbre Applications, vers l’arbre Personnes. Donner à toutes les feuilles atteintes par ce lien le droit « basique » reviendrait à le donner à tout le monde.
D’une façon plus générale, les arbres libres doivent être exclus, car les liens qui s’y font peuvent étendre anormalement les droits des personnes liées.
TODO : généraliserReste ensuite la question de l’ordre de grandeur « raisonnable ». Si nous donnons aux étudiants leur « droit basique » dans IA (Inscriptions Administratives), les populations sont très grandes, et ne correspondent pas à la vie courante : ils ne côtoient pas tous les étudiants de leur diplôme, mais ceux qui sont dans les mêmes modules d’enseignement, groupes de TD, TP, …
Nous ne créerons donc les AACLs donnant le droit basique aux feuilles d’un arbre de personnes vis-à-vis des feuilles de même nœud père et de même niveau, que pour les arbres IP et Affectations (cf. [AACLs>Main.AACLs]).
Droit basique des feuilles par rapport aux groupes de responsabilité
Les feuilles peuvent voir l’ensemble des groupes de responsabilité de leur sur - arbre (cheminement du DN), sans restriction sur les arbres (cf. [AACLs>Main.AACLs]).
Droit basique d’un groupe de responsabilité associé à un nœud d’arbre
Un groupe de responsabilité associé à un nœud aura le même droit basique sur les feuilles que les feuilles, mais pourra contenir des personnes extérieures à la feuille.
TODO Exemple : les enseignants responsables d’une unité (ou module) d’enseignement. Il n’y a pas, dans ce cas, de limitation sur les arbres.
Règles générales de gestion appliquées des groupes de responsabilités
la création est autorisée si le DN du nouveau groupe est écrit dans l’entrée correspondante dans l’attribut responsable, *l’autorisation étant gérée dans l’AACL correspondante. Celle-ci n’autorise lors de la création, que le renseignement de l’attribut administrateurResponsable du groupe. L’attribut responsable du nœud cible, est autorisé à l’écriture pour l’ensemble des groupes de responsabilités situés à des niveaux supérieurs du sous-arbre.
*la suppression d’un groupe de responsabilité ne peut être l’œuvre que de l’Administrateur responsable
*la mise à jour de l’administrateur responsable intervient :
*soit par sa propre action
*soit par remplacement de l’administrateur responsable actuel par la migration, auquel cas le groupe est rattaché à l’administrateur responsable directement supérieur ou au nouvel administrateur responsable précisé par la migration. (cas des responsables de service). L’administrateur responsable actuel est alors supprimé.
Droit d’un autre groupe de responsabilité du même arbre
Un groupe de responsabilité associé au même arbre aura les mêmes droits s’il se situe au-dessus dans l’arborescence, et dans la même branche.
Lien de sous-arbre
Un lien de sous-arbre, réalisé par un *TODO smart referall ldap de l’annuaire sur lui-même, permet de rattacher à un nœud un sous-arbre de personnes. Permet de rattacher un service à une application, une unité d’enseignement à une exportation, etc…
Passerelle de navigation
Un lien de navigation permet de passer d’un arbre à un autre. On ne peut passer d’un nœud d’arbre qu’à un nœud « hiérarchiquement » supérieur d’un autre arbre. Ce type de lien n’est utilisé que pour la navigation, il ne transmet aucun droit.
TODO C’est un mécanisme de ce type qui permet de passer des unités d’enseignement aux diplômes, ou des diplômes aux ufr.Techniquement une passerelle de navigation est un DN.
Extension des groupes : groupes Listes
TODO : voir les dernières versions de Sympa qui autorisent les groupes dynamiques.Citation Architecture Générale : « Nous pourrions créer une autre famille de groupe qui soit de composition libre (pouvant inclure n’importe quelle personne) et qui ne permette d’accéder qu’à des informations de type public. Ce type de groupe permettrait de faire des listes d’adresses, ou des forums de discussion. Le droit de créer de tels groupes Listes serait réservé aux groupes de responsabilité. »
Un groupe liste peut être créé par un groupe responsable. Il peut y ajouter n’importe qui dans l’annuaire.
Localisation des groupes listes : par exemple : ou=groupes,ou=configuration,dc=interldap,dc=fr.
La structure d’un groupe liste :
- des opérations contrôlés par des droits
- le DN du sous-arbre où se trouve le groupe de responsabilité
- des liens (sous forme DN et non d’alias) vers des personnes
- une description (apparaît sur le web)
- un libellé (apparaît dans les clients de messagerie, dans le champs To : )
- un paramètre pour préciser si les destinataires peuvent répondre à la liste
- un alias email (cet alias ne sera visible que par les personnes qui peuvent envoyer un message à la liste)
Afin d’être ajoutée, une personne doit avoir une adresse email.
Le groupe liste est utilisé pour la messagerie. Lors de la visualisation du groupe liste, sont présentées comme informations sur les utilisateurs :
- prénom usuel
- nom usuel
- email
- activité principale
- fonction principale
Opérations devant être contrôlées
- Voir les membres
- Enregistrer de nouveaux membres
- Envoyer des messages (TODO contrôlé par le serveur « ldap-liste » qui seul permet d’utiliser les listes et qui interroge l’annuaire pour les autorisations d’usage de ces listes ; cf. Envoi Message Multiple)
Le groupe créateur dispose de tous les droits.
Autorisations générales disponibles pour chacune des opérations contrôlées :
- Public
- Restreint
- Groupe responsable créateur pour lui seul (on ajoute aucun droit, puisque le groupe responsable a déjà ces droits)
Ces droits (ci-dessus) sont exclusifs. Le choix « Groupe responsable créateur » permet de ne spécifier aucun droit supplémentaire.
Autorisations restreintes disponibles pour chacune des opérations contrôlées
- Tout personnel inscrit à l’annuaire (type K) TODO
- Toute personne du sous-arbre (feuilles sous la responsabilité du groupe créateur ; c’est à dire tout le sous-arbre)
- Membres du groupe liste
- Ensemble spécifié
Ces autorisations restreintes sont cumulables (non-exclusif, attribut multi-valué). C’est donc un « ou » des autorisations restreintes.
Ensemble spécifié :
Liste de sous-arbres de personnes d’un arbre de personnes (sous forme de DN et non de referral).
Description de la classe d’objet groupeListe
TODO voir schéma général LDAP
Droit donné aux Groupes Responsables de créer des entrées dans un noeud sous leur responsabilité
(noeuds mixtes de l’arbre Affectations)
Application des propriétés des nœuds « inscripteur ».
Un Groupe Responsable d’un nœud mixte de l’arbre Affectations (nœud officiel de plus « bas » niveau), ou d’un nœud de niveau supérieur peut ajouter une entrée à ce nœud mixte (créer un lien de personne si la personne n’est pas gérée par HARPEGE), et éventuellement créer l’entrée de personne correspondante.
Pour cela :
- les nœuds mixtes de l’arbre Affectations devront implémenter la classe noeudInscripteur, implémentation à prendre en charge par l’algorithme de Migration
- les schémas de personne autorisés en création devront être renseignés dans les attributs schemaInscripteur de ces nœuds
- les schémas de personne autorisés en sélection devront être renseignés dans les attributs schemaInscriptible de ces nœuds, si l’on veut autoriser une complétion de schéma.
- leurs attributs lienInscriptible devront avoir la valeur « lienBorneAffectation »
- les attributs proposeEnCreation des attributs de la classe lienBorneAffectation autorisées devront être renseignés
- les attributs proposeEnCreation des attributs des classes de personne autorisées devront être renseignés
- Le droit des Groupes Responsables d’utiliser les nœuds inscripteurs de l’arbre devra être donné par une AACL permettant la lecture des attributs de la classe noeudInscripteur.
- Le droit des Groupes Responsables de modifier les attributs « proposés en création » de la personne devra être donné par une AACL en tenant compte de l’attribut gereParHarpege qui doit être à FALSE si l’entrée de personne existe déjà.
- Le droit des Groupes Responsables de modifier les attributs « proposés en création » du lien devra être donné par une AACL.
- Les droits de créer le lien, l’entrée de personne éventuelle, de changer de lien ou de schéma sont à la charge du moteur Arbres & Groupes.
Cinématique des Web Services disponibles pour Arbres et Groupes
Ce chapitre contient la description des différents appels nécessaires pour les composants contrôlant la stratégie des arbres et des groupes.
Définitions préalables
- Acteur : c’est le DN authentifié via l’interface web
- Cible : c’est le nœud parent de celui qui va être créé
- Nœud courant : c’est le nœud qui va être créé
- Fonctions de vérification : ces fonctions permettent de vérifier l’état de la demande ainsi que les différents pré-requis et autorisations nécessaires à la création.
- Fonctions de calcul : ces fonctions permettent de déterminer l’ensemble des valeurs à inscrire dans la nouvelle entrée et leurs caractéristiques (mono/multi-valué, obligatoire/optionnel, modifiable ou non), c'est-à-dire calculer l’héritage.
Cinématique d’une création
Créer un groupe de responsabilité
Règle : Un groupe responsable peut créer un groupe responsable à un niveau inférieur de l’arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un groupe de responsabilité
- renseigner la mise à jour sur la liste des attributs, les types d’attributs, les valeurs possibles (l’administrateur responsable doit être choisi dans l’annuaire sans restriction) ou les informations complémentaires nécessaires pour l’étape de création. (le DN de l’administrateurResponsable est sélectionné par l’utilisateur via une couche de consultation, et est renvoyé par le programme de mise à jour pour la phase de création)
- renseigner l’attribut responsable avec le DN du groupe de responsabilité à créer, créer le groupe de responsabilité
Créer un lien de sous-arbre ou de personne dans un arbre
(Inscriptions de personnes)
Règle : Un groupe responsable peut créer un lien de sous-arbre ou de personne à un niveau inférieur de l’arbre s’il peut lire l’attribut lienInscriptible du nœud sous lequel le lien doit être créé. Si le nœud implémente l’attribut schemaInscriptible, les personnes sélectionnées doivent appartenir à des classes qui peuvent coexister avec les classes citées par un des schemaInscriptible.
Remarque importante : la programmation de la fonction ne doit pas tenir compte de « groupe responsable », mais de la possibilité pour l’acteur de lire les attributs, réglé par AACL, car ce droit n’est pas un droit basique des GR et pourrait être confié à d’autres.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un lien vers un sous – arbre ou un lien de personne en listant les valeurs des attributs lienInscriptible ; ce qui doit conduire à la sélection d’un schéma de lien
NB : il peut y avoir plusieurs schémas du même type (plusieurs type lien de personne et plusieurs type lien de sous-arbre)
- renseigner la mise à jour sur les informations nécessaires pour créer le lien c’est à dire :
- le sous – arbre cible ou la personne cible selon le schéma de lien sélectionné : sous-arbre si le schéma hérite de lienSousArbre (implémente l’attribut ref), personne si le schéma hérite de lienBorne (implémente l’attribut alias) ; en tenant compte éventuellement des classes de personne autorisées (dépend de schemaInscriptible, multi-valué).
- les attributs du schéma de lien sélectionné proposés en création, c'est-à-dire dont l’attribut proposeEnCreation dans le schéma enrichi sont à TRUE.
- créer le lien
NB :
- trouver un sous-arbre cible = rechercher n’importe quel sous-arbre de personnes, en tenant compte des schémas (de personne) si l’attribut schemaInscriptible est renseigné.
- trouver une personne cible = rechercher dans ou = Personnes via la couche de Consultation et la Sélection de population en tenant compte des schémas (de personne) si l’attribut schemaInscriptible est renseigné.
Exemples :
- Création de lien dans l’arbre libre des Applications :
Dans tous les nœuds de l’arbre libre des Applications, les nœuds héritent de lienInscripteur avec les attributs
lienIncriptible = lienBorneApplications,
lienInscriptible = lienSousArbreFiltre
et schemaInscriptible non renseigné
- si le schéma choisit est lienBorneApplication, il hérite de lienBorne; il faut donc choisir une personne et renseigner les attributs de lienBorneApplications proposés en création, c. à d.
- alias = uid de la personne cible
- finValidite = une date de fin de validité optionnelle
- si le schéma choisit est liensousArbreFiltre, il hérite de lienSousArbre; il faut donc choisir une personne et renseigner les attributs de lienSousArbreFiltre proposés en création, c. à d.
- ref = url du sous-arbre cible
- finValidite = une date de fin de validité optionnelle
- filtre = le filtre au sein de ce sous – arbre (schéma filtrable des Personnes uniquement : appel à « filtrage attribut » de « sélection population » pour générer le filtre).
- Création de lien sur un nœud mixte des Affectations, c’est à dire inscription d’un personnel de l’annuaire dans un service :
Seuls les nœuds mixtes de l’arbre mixte des Applications héritent de lienInscripteur avec les attributs
lienIncriptible = lienBorneAffectations
schemaInscripteur = personnelUPMC
schemaInscripteur = personnelExterieur
schemaInscripteur = personnelInvite
Le seul schéma de lien disponible est lienBorneAffectations, il hérite de lienBorne; il faut donc choisir une personne dont une des classes est aussi un des schemaInscripteur et renseigner les attributs de lienBorneAffectations proposés en création, c. à d.
- alias = uid de la personne cible
- finValidite = une date de fin de validité optionnelle
- activite (optionnel)
NB :
- fonctionStructurelle n’est pas proposé en création (obtenu éventuellement par Migration)
- temoinAffectationPrincipale n’est pas proposé en création (géré en pré et post-traitement de l’attribut, une seule affectation principale ; si affectation unique elle est principale).
Créer une entrée de personne dans ou = Personnes en même temps que son inscription dans un arbre de personne distinct de Personnes
(Inscriptions d’une personne nouvelle dans l’annuaire)
Règle : Un groupe responsable peut créer un lien de personne à un niveau inférieur de l’arbre et créer simultanément une entrée de personne dans ou = Personnes, s’il peut lire les attributs lienInscriptible et schemaInscripteurdu nœud sous lequel le lien doit être créé.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer une entrée de personne (dans ou=Personnes) et un lien de personne en utilisant la règle ci-dessus.
- Renseigner la mise à jour sur les liens disponibles en listant les attributs lienInscriptible qui héritent de lienBorne (alias); ce qui doit conduire à la sélection d’un schéma de lien
- Renseigner la mise à jour sur les schémas de personne disponibles en listant les attributs schemaInscriptible ; ce qui doit conduire à la sélection d’un schéma de personne
- Renseigner la mise à jour sur les informations nécessaires pour créer l’entrée de la personne et le lien, c'est-à-dire demander la saisie de tous les attributs proposés en création des schémas de lien et de personne sélectionnés, c'est-à-dire ceux dont l’attribut proposeEnCreation dans le schéma enrichi sont à TRUE.
créer la personne et le lien
*NB : cette création de la personne a de nombreuses sous-fonctions communes avec la Migration du personnel
- Prévoir une fonction élaborée de détection des homonymies utilisable par consultation et mise à jour.
Exemple : inscription des nouveaux arrivants dans les services et laboratoires par le Groupe Responsable de cette entité ou un GR de niveau supérieur.
Créer un groupe liste
Règle : Un groupe responsable peut créer un groupe liste à son niveau dans l’arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un groupe liste (en utilisant la règle ci-dessus)
- renseigner la mise à jour sur les informations nécessaires pour créer le groupe liste, par l’utilisation du schéma du groupe liste
- les membres sont sélectionnables dans ou=Personnes
- les droits sont sélectionnés dans une liste de valeurs
- si le droit spécifié est « droits fins », il faut alors sélectionner les droits fins dans la liste de valeurs
- si parmi les droits fins, est sélectionné la valeur « Ensemble spécifié », proposer à la sélection des sous - arbres
- créer le groupe liste
Créer un sous-arbre (la racine nœud du sous-arbre)
Règle : Un groupe responsable peut créer un sous-arbre à un niveau inférieur de l’arbre si la cible doit être créée en dessous d’un nœud mixte, d’un nœud libre ou d’un nœud semi-libre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un sous-arbre (en utilisant la règle ci-dessus)
- renseigner la mise à jour sur les nouveaux schémas de nœud disponibles pour la création d’un sous-arbre
- renseigner la mise à jour sur les informations nécessaires pour créer le sous arbre en fonction d’un nouveau schéma déjà sélectionné parmi les nouveauNoeud, c'est-à-dire le calcul de l’héritage.
- créer le sous-arbre
Réactiver un compte supprimé
Règle : Une personne dont le compte avait été supprimé (retiré de l’annuaire LDAP) et conservée dans la base relationnelle Annuaire peut être réactivée à sa demande, avec une échéance de trois mois. (Il ne s’agit que de l’entrée dans l’arbre Personne.)
Fonctions nécessaires :
- effectuer la création : ajout direct de l’entrée dont l’image ldiff est prise dans la base.
- supprimer l’entrée correspondante dans la base relationnelle Annuaire.
ATTENTION : en cas de changement du schéma de l’annuaire, les entrées stockées sont peut-être à revoir
Cinématique d’une modification
Modification d’un groupe de responsabilité
Règle : Un groupe responsable peut être modifié en fonction de la définition du groupe de responsabilité.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de modifier un groupe de responsabilité (l’acteur doit être administrateur ou administrateurResponsable dans la cible)
- renseigner la mise à jour sur la liste des attributs, les types d’attributs et les valeurs en vue de la modification (le DN du nouvel administrateur ou du nouveau membre est sélectionné par l’utilisateur via une couche de consultation, et est renvoyé par le programme de mise à jour pour la phase de modification de cet attribut)
- modifier le groupe de responsabilité
Modifier un lien de sous-arbre ou de personne dans un arbre
Règle : Un groupe responsable peut modifier un lien de sous-arbre ou de personne à un niveau inférieur de l’arbre s’il peut lire l’attribut lienInscriptible du nœud sous lequel le lien a été créé.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de modifier un lien vers un sous – arbre ou un lien de personne en listant les lienInscriptible non implémentées par le lien cible; ce qui peut conduire à la sélection d’un nouveau schéma de lien
- renseigner la mise à jour sur les informations nécessaires pour modifier le lien en utilisant les règles de migration de schéma
- Supprimer l’ancien schéma
- Ajouter le nouveau schéma à l’entrée du lien
Exemple d’application :
Utiliser un nouveau schéma pour ajouter un attribut à un lien, et passer progressivement à ce nouveau schéma.
Modifier le schéma de l’entrée d’une personne dans ou = Personnes par un créateur potentiel
(Modification d’inscription d’une personne dans l’annuaire)
Règle : Un groupe responsable peut modifier une entrée de personne dans ou = Personnes, si elle est liée au nœud dont il est responsable ou à un nœud de niveau inférieur, s’il peut lire les attributs lienInscriptible et schemaInscripteur du nœud sous lequel le lien doit être créé, [et si elle n’a pas été reprise en charge par la migration (témoin gere parHarpege).
Remarque importante : il faut programmer cette fonction sans tenir compte du témoin, cette dernière partie de la règle étant gérée indépendamment par AACL (droit de mise à jour limité des GR sur les personnes gérés par Harpège).
Cette fonction pourra servir à d’autres usages si elle est programmée à son niveau général
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de modifier le schéma d’une entrée de personne (dans ou=Personnes) et un lien de personne en utilisant la règle ci-dessus.
- Renseigner la mise à jour sur les liens disponibles en listant les valeurs de l’attribut lienInscriptible qui héritent de lienBorne (alias); ce qui doit conduire à la sélection d’un schéma de lien
- Renseigner la mise à jour sur les schémas de personne disponibles en listant les schemaInscripteur ; ce qui doit conduire à la sélection d’un schéma de personne
- Effectuer la migration de schéma
- Renseigner la mise à jour sur les informations nécessaires pour créer l’entrée de la personne et le lien, c'est-à-dire demander la saisie ou la modification de tous les attributs proposés en création des schémas de lien et de personne sélectionnés, c'est-à-dire ceux dont l’attribut proposeEnCreation dans le schéma enrichi sont à TRUE.
- créer la personne et le lien
Exemple : rectification de l’inscription des nouveaux arrivants dans les services et laboratoires par le Groupe Responsable de cette entité ou un GR de niveau supérieur.
Ajouter un schéma à l’entrée d’une personne dans ou = Personnes par un créateur potentiel
Cette fonction est la même que la précédente, mais la personne peut-être sélectionnée parmi des schemaInscriptible du nœud inscripteur.
On doit alors proposer, si le schéma de la personne n’est pas un des schémas inscripteurs de faire une complétion de schéma au lieu d’une migration.
Exemple : inscription d’un étudiant nouvel arrivant dans les services et laboratoires par le Groupe Responsable de cette entité ou un GR de niveau supérieur, si la solution multi-classe est adoptée.
Modifier les attributs de l’entrée d’une personne dans ou = Personnes par un créateur potentiel
Dans les mêmes conditions que pour la modification de schéma, renseigner en plus la mise à jour sur possibilité contextuelle de modifier les attributs proposés en création de la personne cible.
Modification d’un groupe liste
Règle : Le groupe responsable peut modifier ses groupes liste.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de modifier le groupe liste (en utilisant la règle ci-dessus)
- renseigner la mise à jour sur les informations nécessaires pour modifier le groupe liste, par l’utilisation du schéma du groupe liste
- les membres sont sélectionnables dans ou=Personnes
- les membres sont supprimables
- les droits sont sélectionnés dans une liste de valeurs
- si le droit spécifié est « droits fins », il faut alors sélectionnés les droits fins dans la liste de valeurs
- si parmi les droits fins, est sélectionné la valeur « Ensemble spécifié », proposer à la sélection des sous-arbres
- modifier le groupe liste
Modification des attributs d’un nœud mixte, semi-libre ou libre
Règle : Un groupe responsable peut modifier la cible si cette cible est un nœud mixte, un nœud libre ou un nœud semi-libre de son sous-arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un sous-arbre (en utilisant la règle ci-dessus)
- renseigner la mise à jour sur les informations nécessaires pour modifier le nœud
- modifier le nœud
Auto-inscription à un sous-arbre de nœud semi-libre
Règle : La personne peut copier ou déplacer son lien vers un sous – niveau direct autorisant l’auto – inscription.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de s’inscrire (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur la liste des sous – niveaux autorisant l’auto – inscription
- effectuer le déplacement ou la copie (suivant la valeur de partition)
Inscription d’une population à un sous-arbre de nœud semi-libre
Règle : Le groupe responsable peut copier ou déplacer le lien d’une population vers un sous niveau direct
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle d’inscrire une population (en utilisant la règle ci-dessus)
- renseigner la mise à jour sur la liste des sous-niveaux et proposer l’interface de consultation paramétrée avec le base du nœud actuel et un filtre adapté afin de sélectionner la population
- effectuer les déplacements ou les copies de la population (suivant la valeur de partition)
Auto-radiation à un sous-arbre de nœud semi-libre
Règle : La personne peut supprimer son lien ou le déplacer depuis un niveau autorisant l’auto-inscription vers un sur-niveau direct.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de se radier (en utilisant la règle ci-dessus)
- renseigner la mise à jour sur la liste des sous-niveaux autorisant l’auto-inscription
- effectuer le déplacement ou la suppression (suivant la valeur de partition)
Radiation d’une population à un sous-arbre de nœud semi-libre
Règle : Le groupe responsable peut supprimer les liens correspondant à une population ou les déplacer vers un sur - niveau direct
Note : pour un déplacement vers des niveaux supérieurs, indiquer qu’il faut le faire en plusieurs fois.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de radier une population (en utilisant la règle ci-dessus)
- renseigner la mise à jour sur le sur-niveau et proposer l’interface de consultation paramétrée avec le base du nœud actuel et un filtre adapté afin de sélectionner la population
- effectuer les déplacements ou les suppressions de la population (suivant la valeur de partition)
Cinématique d’une suppression
Supprimer un groupe de responsabilité
Règle : Un administrateur responsable ne peut supprimer que son groupe de responsabilité.
Notes :
Confirmation nécessaire de part la couche de consultation
Dans le cas où le groupe de responsabilité est supprimé, seul un groupe de responsabilité de niveaux supérieurs peut le recréer.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer son groupe de responsabilité.
- supprimer l’attribut responsable qui pointe sur ce groupe puis celui-ci.
Supprimer un lien de sous-arbre
Règle : Un groupe responsable peut supprimer un lien de sous – arbre à un niveau inférieur de l’arbre si le nœud sous lequel le lien doit être supprimé est un noeudExtensibleLibre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un lien vers un sous – arbre (en utilisant la règle ci – dessus) (AACL sur lienInscriptible)
- supprimer le lien de sous – arbre
Supprimer un lien de personne dans un arbre libre
(Radiation d’une personne)
Règle : Un groupe responsable peut supprimer un lien de personne à un niveau inférieur de l’arbre si le nœud sous lequel le lien doit être supprimé est un noeudExtensibleLibre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un lien vers une personne (en utilisant la règle ci – dessus) (AACL sur lienInscriptible)
- supprimer le lien de personne
Supprimer un groupe liste
Règle : Un groupe responsable peut supprimer un groupe liste à son niveau dans l’arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un groupe liste (en utilisant la règle ci – dessus)
- supprimer le groupe liste
Supprimer un sous – arbre (la racine nœud du sous – arbre)
Règle : Un groupe responsable peut supprimer un sous – arbre à un niveau inférieur de l’arbre si la cible doit être supprimée en dessous d’un nœud mixte, d’un nœud libre ou d’un nœud semi - libre.
Note : Renseigner si le sous - arbre est non vide. Dans le cas d’un arbre semi – libre, il faut absolument déplacer les liens vers le niveau supérieur.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un sous – arbre (en utilisant la règle ci – dessus)
- supprimer le sous – arbre
Cinématique d’une consultation
La consultation ne devrait normalement pas transiter par le moteur A&G.
Description des fonctions nécessaires pour les WSI1
Chaque fonctionnalité précisée dans le chapitre précédent (création, modification ou suppression) nécessite de deux à quatre fonctions :
- la première dépend du contexte et permet de proposer la fonctionnalité à l’interface
- la dernière permet d’activer l’action
Les deux autres fonctions renseignent des paramètres supplémentaires ci besoin est :
- le schéma choisi
- le masque de saisie lors de la création ou de la modification
Chaque fonction est appelée sous la forme d’un Web Service depuis la couche d’interface avec l’utilisateur vers les WSI. Lors de l’appel de ces fonctions les paramètres sont transférés sous forme de requête, c’est à dire d’un fichier XML au format associé (AnnuaireUPMC.xsd). Les retours se font également sous la forme de fichiers XML. Ces retours contiennent un code de retour. Suivant la valeur de celui – ci, la couche de présentation doit tenir compte :
- soit d’un code général d’erreur
- soit d’une réponse XML contenant les éléments nécessaires
Dans le cas d’un code de retour non nul (erreur), la réponse doit contenir la requête de demande surchargée d’informations complémentaires (comme un code d’erreur spécifié à l’endroit précis de l’erreur) afin que l’émetteur puisse déterminer la source de l’erreur et proposé l’interface adéquate à l’utilisateur final. Cette fonctionnalité doit être implémentée par le WSI. Toutefois la couche de présentation n’est pas forcée dans tenir compte.
La vérification du schéma XML peut se faire à l’adresse suivante :
http://www.w3.org/2001/03/webdata/xsvDans ce chapitre, sont précisées un certain nombre de fonctions pour plus de simplicité sur le traitement qu’elles doivent effectuées mais aussi sur le moyen d’y arriver.
Fonctions de vérification
- {RESPONSABLE(A)} : Vérifier l’appartenance de l’acteur au groupe responsable direct et supérieurs du nœud A
- {NATURE_ARBRE} : Vérifier la nature de l’arbre via la présence de la classe d’objet teteArbreExtensible dans la sur-arborescence : afin d’optimiser, stocker en variable globale le niveau de départ des sous-arbres majeurs (IA, IP, Personnes) égale à 2 dans l’annuaire de l’UPMC
- {PROFONDEUR_MAX} : Vérifier la profondeur maximum
- {NIVEAUX_REL} : Vérifier le nombre de semi – libres relativement à la position du nœud mixte supérieur
Fonctions de calcul
Fonction de lecture des attributs et de leurs caractéristiques
- {DETERMINER_ATTRIBUTS} : à partir de la classe d’objet, détermine l’ensemble des attributs de cette classe et leur caractère obligatoire, via le schéma enrichi).
- {DETERMINER_TYPE_ATTRIBUT} : à partir de l’attribut, déterminer son type, sa cardinalité et son caractère modifiable (via le schéma enrichi).
- {DETERMINER_VALEURS_ATTRIBUT} : Compte tenu du nom de l’attribut et de la classe d’objet, déterminer :
- soit la liste de valeurs et la valeur par défaut (via le schéma enrichi)
- soit pour un type particulier, les informations complémentaires à communiquer à la couche de présentation (pour le DN, une base et un filtre, afin de limiter la population dans lequel le DN peut être sélectionné)
Fonction de calculs des RDN
Toutes les fonctions de calcul de RDN demandent une recherche à un seul niveau dans le sous-arbre.
- {GENERATION_RDN_NŒUD_NON_LIE} : générer un RDN correspondant à un élément numérique croissant (exemple : pour le premier sous – arbre du SIG, le RDN doit correspondre à cn=1)
- {GENERATION_RDN_GROUPE_RESPONSABLE} : générer un RDN correspondant à un élément numérique croissant (exemple : le RDN pourrait être cn=GR219)
- {GENERATION_RDN_GROUPE_LISTE} : générer un RDN correspondant à un élément numérique croissant (exemple : le RDN pourrait être cn=GL356)
- {GENERATION_DESCRIPTION_GROUPE} : générer une description correspondant à la concaténation des valeurs des RDN jusqu’à dc=upmc,dc=fr séparés par des / (description du groupe responsable du SIG : GR/SIG/901/UPMC/Affectations)
Fonction de calcul de l’héritage
- {HERITAGE} : à partir de la classe d’objet du nœud parent ainsi que celle stockée dans l’attribut nouveauNoeud considéré, consulter le schéma enrichi et déterminer les attributs du nœud à créer.
Renseigner l’interface sur la possibilité de créer un sous-arbre
Cette fonction a pour but de renseigner l’interface en fonction de la cible et surtout de l’acteur afin de savoir si l’interface peut ou non proposer la création d’un sous-arbre.
Paramètres
Fonctions de vérification
- {RESPONSABLE}
- {NATURE_ARBRE}
- {PROFONDEUR_MAX}
- {NIVEAUX_REL}
Fonctions de calcul
Dans le cas où l’ensemble des fonctions de vérification sont valides, la création de l’arbre doit être possible.
Présentation des nouveaux schémas de nœud pour la création du sous-arbre
Suite à la proposition de l’interface, la création d’un sous-arbre nécessite de choisir le schéma associé. Ce schéma est choisi en fonction de la nature du sous-arbre : groupe, application, … Il se peut que lors de cette phase un seul type de sous-arbre soit proposé (cas général dans l’arbre IP)
Paramètres
Fonctions de vérification
- {RESPONSABLE}
- {NATURE_ARBRE}
- {PROFONDEUR_MAX}
- {NIVEAUX_REL}
Fonctions de calcul
Présentation du masque de saisie lors de la création d’un sous - arbre
Suite au choix du type de sous – arbre, il est nécessaire de renseigner un certain nombre d’informations en tenant compte des différents impératifs imposés par l’héritage (modifiable ou non, optionnel ou obligatoire)
Paramètres
- acteur
- nœud déjà existant
- schéma choisi
Fonctions de vérification
- {RESPONSABLE}
- {NATURE_ARBRE}
- {PROFONDEUR_MAX}
- {NIVEAUX_REL}
Fonctions de calcul
Exécution de la création d’un sous-arbre
Grâce à toutes ces informations, il est donc possible de créer le nœud du nouveau sous-arbre.
Paramètres
- acteur
- nœud déjà existant
- schéma choisi
- attributs et valeurs
Fonctions de vérification nécessaires
Fonctions de calcul
Renseigner l’interface sur la possibilité de créer un groupe responsable
Cette fonction a pour but de renseigner l’interface en fonction de la cible et surtout de l’acteur afin de savoir si l’interface peut ou non proposer la création d’un groupe responsable. Cela peut se produire dans le cas où l’acteur fait partie d’un groupe de responsabilité attaché à un nœud hiérarchiquement supérieur à la cible.
Paramètres
Fonctions de vérification
- Pas d’attribut responsable sur nœud courant
- {RESPONSABLE(NŒUD_DIRECTEMENT_SUPERIEUR)}
Fonctions de calcul
Dans le cas où l’ensemble des fonctions de vérification sont valides, la création du groupe responsable doit être possible.
Présentation du masque de saisie lors de la création d’un groupe responsable
Grâce au paramètre correspondant au DN du sous – arbre, il est nécessaire de renseigner un certain nombre d’informations en tenant compte des différents impératifs imposés par la classe d’objet et les caractéristiques des attributs.
Paramètres
- acteur
- DN du sous – arbre
Fonctions de vérification nécessaires
- Pas d’attribut responsable sur nœud courant
- {RESPONSABLE(NŒUD_DIRECTEMENT_SUPERIEUR)}
Fonctions de calcul
- {GENERATION_RDN_GROUPE_RESPONSABLE}
- {DETERMINER_ATTRIBUTS}
- {DETERMINER_TYPE_ATTRIBUT}
- {DETERMINER_VALEURS_ATTRIBUT}
Traite la classe d’objet, récupère l’ensemble des attributs et leurs caractéristiques, via le schéma enrichi.
Création d’un groupe responsable
Paramètres
- Acteur
- Nœud cible pour la création du groupe responsable
Fonctions de vérification nécessaires
- Pas d’attribut responsable sur nœud courant
- {RESPONSABLE(NŒUD_DIRECTEMENT_SUPERIEUR)}
Fonctions de calcul
- Formatage en entrée LDAP des données retournées
- Ajout du groupe de responsabilité
Créer un groupe de responsabilité
Règle : Un groupe responsable peut créer un groupe responsable à un niveau inférieur de l’arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un groupe de responsabilité
- renseigner la mise à jour sur la liste des attributs, les types d’attributs, les valeurs possibles (l’administrateur responsable doit être choisi dans l’annuaire sans restriction) ou les informations complémentaires nécessaires pour l’étape de création. (le DN de l’administrateurResponsable est sélectionné par l’utilisateur via une couche de consultation, et est renvoyé par le programme de mise à jour pour la phase de création)
- renseigner l’attribut responsable avec le DN du groupe de responsabilité à créer, créer le groupe de responsabilité
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Renseigner l’interface sur la possibilité de créer un lien de sous-arbre ou de personne
Cette fonction a pour but de renseigner l’interface en fonction de la cible et surtout de l’acteur afin de savoir si l’interface peut ou non proposer la création d’un lien. Cela peut se produire dans le cas où l’acteur fait partie d’un groupe de responsabilité attaché à un nœud hiérarchiquement supérieur à la cible.
Paramètres
Fonctions de vérification
- Pas d’attribut responsable sur nœud courant
- {RESPONSABLE(NŒUD_DIRECTEMENT_SUPERIEUR)}
- possibilité de lire lienInscriptible du noeud
Fonctions de calcul
Dans le cas où l’ensemble des fonctions de vérification sont valides, la création du lien doit être possible.
Présentation du masque de saisie lors de la création d’un lien
Utilise les attributs proposés en création du schéma enrichi du lien
Créer un lien de sous – arbre
Règle : Un groupe responsable peut créer un lien de sous – arbre à un niveau inférieur de l’arbre si le nœud sous lequel le lien doit être créé est un noeudInscriptible.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un lien vers un sous – arbre (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur les informations nécessaires pour créer le lien de sous – arbre, c’est à dire :
- le sous – arbre cible (population : sous – arbre de personnes)
- le filtre au sein de ce sous – arbre [schéma filtrable des Personnes uniquement : appel à « filtrage attribut » de « sélection population » pour générer le filtre], plus le filtrage supplémentaire éventuel par schemaInscriptible du noeud.
- créer le lien de sous – arbre
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Créer un lien de personne dans un arbre libre
(Inscription d’une personne)
Règle : Un groupe responsable peut créer un lien de personne à un niveau inférieur de l’arbre si le nœud sous lequel le lien doit être créé est un noeudInscriptible.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un lien vers une personne (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur les informations nécessaires pour créer le lien de personne, c’est à dire :
- la personne cible (population : ou=Personnes) + filtrage éventuel sur schéma inscriptible
- créer le lien de personne
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Renseigner l’interface sur la possibilité de créer une entrée de personne
(Enregistrement dans ou=Personnes d’une personne et inscription sur place)
Règle : Un groupe responsable peut créer une entrée de personne dans ou=Personnes liée à un niveau inférieur de l’arbre si le nœud sous lequel le lien doit être créé est un noeudInscripteur (AACL de lecture sur l’attribut schemaInscripteur des nœuds)
Fonctions nécessaires :
- renseigner sur possibilité contextuelle selon la règle
- faire choisir le schéma de création (choix d’un des schemaInscripteur)
- produire la liste des attributs à proposer en création
TODO
Créer une entrée de personne
(Enregistrement dans ou=Personnes d’une personne)
TODO
Créer un groupe liste
Règle : Un groupe responsable peut créer un groupe liste à son niveau dans l’arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un groupe liste (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur les informations nécessaires pour créer le groupe liste, par l’utilisation du schéma du groupe liste
- les membres sont sélectionnables dans ou=Personnes
- les droits sont sélectionnés dans une liste de valeurs
- si le droit spécifié est « droits fins », il faut alors sélectionner( les droits fins dans la liste de valeurs
- si parmi les droits fins, est sélectionné la valeur « Ensemble spécifié », proposer à la sélection des sous - arbres
- créer le groupe liste
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Créer un sous-arbre (la racine nœud du sous-arbre)
Règle : Un groupe responsable peut créer un sous – arbre à un niveau inférieur de l’arbre si la cible doit être créée en dessous d’un nœud mixte, d’un nœud libre ou d’un nœud semi - libre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un sous – arbre (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur les nouveaux schémas de nœud disponibles pour la création d’un sous – arbre
- renseigner la mise à jour sur les informations nécessaires pour créer le sous - arbre en fonction d’un nouveau schéma déjà sélectionné parmi les nouveauNoeud.
- créer le sous-arbre
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Modification d’un groupe de responsabilité
Règle : Un groupe responsable peut être modifié en fonction de la définition du groupe de responsabilité.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de modifier un groupe de responsabilité (l’acteur doit être administrateur ou administrateurResponsable dans la cible)
- renseigner la mise à jour sur la liste des attributs, les types d’attributs et les valeurs en vue de la modification (le DN du nouvel administrateur ou du nouveau membre est sélectionné par l’utilisateur via une couche de consultation, et est renvoyé par le programme de mise à jour pour la phase de modification de cet attribut)
- modifier le groupe de responsabilité
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Modifier un lien de sous-arbre
Par GR du nœud ou d’un nœud supérieur du sur-arbre.
Utilise lienInscriptible d’un nœud inscriptible et proposeEnCreation des attributs du schéma du lien
TODO
Modifier un lien de personne
Par GR du nœud ou d’un nœud supérieur du sur-arbre.
Utilise lienInscriptible d’un nœud inscriptible et proposeEnCreation des attributs du schéma du lien
TODO
Modifier un schéma de personne par un créateur potentiel
Règle : Un groupe responsable peut modifier un schéma de personne liée à un niveau inférieur de l’arbre si le nœud sous lequel le lien se trouve est un noeudInscripteur (AACL de lecture sur l’attribut schemaInscripteur des nœuds) et que la personne n’est pas gérée par Harpège (AACL)
Fonctions nécessaires :
- Modification par migration de schéma
- Modification par complétion de schéma
TODO
Modifier les attributs d’une personne par un créateur potentiel
Mêmes règles
TODO
Modification d’un groupe liste
Règle : Le groupe responsable peut modifier ses groupes liste.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de modifier le groupe liste (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur les informations nécessaires pour modifier le groupe liste, par l’utilisation du schéma du groupe liste
- les membres sont sélectionnables dans ou=Personnes
- les membres sont supprimables
- les droits sont sélectionnés dans une liste de valeurs
- si le droit spécifié est « droits fins », il faut alors sélectionnés les droits fins dans la liste de valeurs
- si parmi les droits fins, est sélectionné la valeur « Ensemble spécifié », proposer à la sélection des sous - arbres
- modifier le groupe liste
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Modification des attributs d’un nœud mixte, semi-libre ou libre
Règle : Un groupe responsable peut modifier la cible si elle est un nœud mixte, un nœud libre ou un nœud semi – libre de son sous - arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de créer un sous – arbre (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur les informations nécessaires pour modifier le nœud
- modifier le nœud
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Auto-inscription à un sous-arbre de nœud semi-libre
Règle : La personne peut copier ou déplacer son lien vers un sous-niveau direct autorisant l’auto-inscription.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de s’inscrire (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur la liste des sous – niveaux autorisant l’auto – inscription
- effectuer le déplacement ou la copie (suivant la valeur de partition)
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Inscription d’une population à un sous – arbre de nœud semi - libre
Règle : Le groupe responsable peut copier ou déplacer le lien d’une population vers un sous niveau direct
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle d’inscrire une population (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur la liste des sous – niveaux et proposer l’interface de consultation paramétrée avec le base du nœud actuel et un filtre adapté afin de sélectionner la population
- effectuer les déplacements ou les copies de la population (suivant la valeur de partition)
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Auto-radiation à un sous-arbre de nœud semi-libre
Règle : La personne peut supprimer son lien ou le déplacer depuis un niveau autorisant l’auto – inscription vers un sur niveau direct.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de se radier (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur la liste des sous – niveaux autorisant l’auto – inscription
- effectuer le déplacement ou la suppression (suivant la valeur de partition)
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Radiation d’une population à un sous – arbre de nœud semi - libre
Règle : Le groupe responsable peut supprimer les liens correspondant à une population ou les déplacer vers un sur - niveau direct
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de radier une population (en utilisant la règle ci – dessus)
- renseigner la mise à jour sur le sur - niveau et proposer l’interface de consultation paramétrée avec le base du nœud actuel et un filtre adapté afin de sélectionner la population
- effectuer les déplacements ou les suppressions de la population (suivant la valeur de partition)
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Supprimer un groupe de responsabilité
Règle : Un administrateur responsable ne peut supprimer que son groupe de responsabilité.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer son groupe de responsabilité.
- supprimer l’attribut responsable qui pointe sur ce groupe puis celui – ci.
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Supprimer un lien de sous-arbre
Règle : Un groupe responsable peut supprimer un lien de sous – arbre à un niveau inférieur de l’arbre si le nœud sous lequel le lien doit être supprimé est un noeudInscriptible.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un lien vers un sous – arbre (en utilisant la règle ci – dessus)
- supprimer le lien de sous – arbre
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Supprimer un lien de personne dans un nœud inscriptible
(Radiation d’une personne)
Règle : Un groupe responsable peut supprimer un lien de personne à un niveau inférieur de l’arbre si le nœud sous lequel le lien doit être supprimé est un noeudInscriptible.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un lien vers une personne (en utilisant la règle ci – dessus)
- supprimer le lien de personne
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Supprimer une entrée de personne dans ou = Personnes par un créateur potentiel
FONCTION INTERDITE : ce sont les scripts de ménage seuls qui peuvent s’en charge par fin de validité.
Supprimer un groupe liste
Règle : Un groupe responsable peut supprimer un groupe liste à son niveau dans l’arbre.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un groupe liste (en utilisant la règle ci – dessus)
- supprimer le groupe liste
Paramètres
Fonctions de vérification nécessaires
Fonctions de calcul
Supprimer un sous – arbre (la racine nœud du sous – arbre)
Règle : Un groupe responsable peut supprimer un sous – arbre à un niveau inférieur de l’arbre si la cible doit être supprimée en dessous d’un nœud mixte, d’un nœud libre ou d’un nœud semi - libre.
Renseigner si le sous – arbre est non vide.
Dans le cas d’un arbre semi – libre, il faut absolument déplacer les liens vers le niveau supérieur.
Fonctions nécessaires :
- renseigner la mise à jour sur la possibilité contextuelle de supprimer un sous – arbre (en utilisant la règle ci – dessus)
- supprimer le sous – arbre
Réactiver un compte supprimé
TODO
Schéma XML
Le schéma XML suit la description générale des fonctions faite au chapitre 9. Toutefois certains schémas de données sont repris du schéma DSMLv2 issus d’OASIS. En effet les éléments comme les filtres de recherche ainsi que les réponses sont extraites du schéma DSML v2.
TODO
Addendum en phase de réalisation
Algorithme de « clonage » en pousse d’arbre
L'algorithme de "clonage" (on l'appelait "héritage", mais ça prête à confusion, car justement, on n'hérite pas vraiment car on change de schéma), en tout c