Author: bleny Date: 2010-09-23 12:13:48 +0200 (Thu, 23 Sep 2010) New Revision: 339 Url: http://nuiton.org/repositories/revision/wikitty/339 Log: update spec Modified: trunk/src/site/rst/Spec.rst Modified: trunk/src/site/rst/Spec.rst =================================================================== --- trunk/src/site/rst/Spec.rst 2010-09-23 10:12:47 UTC (rev 338) +++ trunk/src/site/rst/Spec.rst 2010-09-23 10:13:48 UTC (rev 339) @@ -7,6 +7,7 @@ identifiants commence par un UUID et peut être séparé d'une extension spécifique pour certain besoin par un '_' (underscore) +Un wikitty a toujours un identifiant. Gestion des droits ================== @@ -15,7 +16,7 @@ ----------------------- Les utilisateurs ont un nom et un mot de passe, les groupes contiennent -des utilisateurs (d'autres groupes ?) +des utilisateurs et d'autres groupes Par défaut il existe un *WikittyGroup* portant le nom **WikittyAppAdmin**. Si ce groupe n'existe pas ou qu'il est vide, cela indique que tous les @@ -24,7 +25,7 @@ - pour permettre d'avoir une authentification, mais que l'on ne souhaite pas de gestion d'autorisation. -- pour servire de bootstrap au lancement de l'application seul les AppAdmin +- pour servir de bootstrap au lancement de l'application seul les AppAdmin peuvent modifier le *WikittyGroup* portant le nom **WikittyAppAdmin**, or s'il est vide il faut pouvoir le remplir. @@ -45,17 +46,16 @@ SecurityToken ne fera qu'augmenter. Pour éviter cela, il faut prévoir un petit job qui de temps en temps fait le ménage dans les SecurityToken trop vieux. +Gestion des droits sur un Wikitty (sécurité niveau 1) +----------------------------------------------------- -Gestion des droits sur un Wikitty ---------------------------------- - Un wikitty a plusieurs extensions, pour chacune de ces extensions, on a plusieurs droits. On distinque quatre niveaux de droits : * owner (un utilisateur) donne tous les droits sur un wikitty * admin (zéro ou plusieurs utilisateurs / groupes) permet d'ajouter ou de - supprimer des éléments dans writer et reader + supprimer des éléments dans writer et reader, et tous les droits comme 'owner' * writer (zéro ou plusieurs utilisateurs / groupes) permet, pour chacun des champs de cette extension, de modifier la valeur @@ -70,13 +70,24 @@ owner en tant que reader. Car de toute façon l'owner aura toujours le droit en lecture. -La granularité est donc au niveau des extensions. C'est à dire qu'avoir -le droit reader de l'extension Ext permet de lire tous les champs de l'extension -Ext de tous les wikitty qui ont l'extension Ext. +La granularité des droits se situe donc au niveau de chaque instance. On doit +pouvoir définir le droit pour chaque extension, de chaque wikitty. Il n'y a +pas de gestion des droits par champs. Avoir le droit *reader* sur une extension +d'un wikitty donne le droit de lecture sur tous les champs de cette extension. -Gestion des droits sur les extensions -------------------------------------- +Du point de vue structure de données, ces droits sont stockés sur le wikitty +lui-même, dans des champs spécifiques. Par exemple, si le wikitty porte +l'extension *Ext*, il portera également l'extension « Ext:WikittySecurity » +et il y aura, sur le Wikitty, un champ nommé « owner » (dont le FQN est +« Ext:WikittySecurity.owner »). +Autre exemple, si un wikitty porte 3 extensions, ayant chacune 10 champs. +Le wikitty aura, au total, 42 champs : 3 × 10 champs + 3 extensions × 4 champs +(les 4 champs de l'extension WikittySecurity). + +Gestion des droits sur les extensions (sécurité niveau 2) +--------------------------------------------------------- + Pour chaque extension, on a la même hiérachie de droit qui donnent des possibilités différentes : @@ -85,7 +96,7 @@ * admin : permet de changer les droits de l'extension. Donc, permet d'ajouter ou de supprimer des éléments dans writer et reader -* writer : permet de modifier l'extension l'extension +* writer : permet de modifier l'extension * reader : permet de lire l'extension pour en créer des instances. Si le reader est vide, tout le monde peut créer. Pour que seuls les AppAdmin et le owner @@ -94,22 +105,11 @@ Si une extension ne dispose pas de ces informations, seuls les AppAdmin peuvent créer les instances et modifier l'extension. -Comment ces droits sont stockés -------------------------------- +Ces droits sont stockés sous le forme d'un Wikitty. Pour chaque extension +connue, il y aura donc un wikitty dont la seule extension sera WikittySecurity. -Pour chaque extension connue, il y aura donc un wikitty dont le seule -extension sera WikittySecurity. Chacun de ces wikitty aura pour identifiant -« WikittySecurity'ExtensionName' ». +À VALIDER : Chacun de ces wikitty aura pour identifiant « WikittySecurity'ExtensionName' ». -Pour stoker les droits qui portent sur les extensions, on fait appel -à des **meta-extensions**. Une - -Pseudo extension est portée par les extensions du wikitty. Exemple avec -WikittySecurity sur un Wikitty Personne qui a une extension Employee et -Customer. Il y a une extension Employee:WikittySecurity et une extension -Customer:WikittySecurity. le séparateur de pseudo-extension = ':' comme css - - Localisation ============ @@ -148,5 +148,4 @@ Pseudo extension ================ - migration : méthode migrate(oldExtension, newExtension, Wikitty, Locale) Locale pouvant etre null.