Author: jcouteau Date: 2011-02-21 15:17:58 +0100 (Mon, 21 Feb 2011) New Revision: 713 Url: http://nuiton.org/repositories/revision/wikitty/713 Log: Improve doc Added: trunk/src/site/rst/user/ trunk/src/site/rst/user/generation.rst trunk/src/site/rst/user/hessian.rst trunk/src/site/rst/user/migration.rst trunk/src/site/rst/user/security.rst Removed: trunk/src/site/rst/generation.rst trunk/src/site/rst/hessian.rst trunk/src/site/rst/migration.rst Modified: trunk/src/site/rst/fonctionnement.rst trunk/src/site/site_fr.xml Modified: trunk/src/site/rst/fonctionnement.rst =================================================================== --- trunk/src/site/rst/fonctionnement.rst 2011-02-16 21:37:57 UTC (rev 712) +++ trunk/src/site/rst/fonctionnement.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -95,7 +95,7 @@ - login/logout - check de droit (read, write, delete) -Les nouveaux services (cache, securite, notification, ...) s'intercale en +Les nouveaux services (cache, securité, notification, ...) s'intercale en couche au dessus du coeur pour founir les services. Le coeur delegue le travail à trois services qui peuvent être implanté avec Deleted: trunk/src/site/rst/generation.rst =================================================================== --- trunk/src/site/rst/generation.rst 2011-02-16 21:37:57 UTC (rev 712) +++ trunk/src/site/rst/generation.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -1,111 +0,0 @@ -.. - -.. * #%L -.. * Wikitty -.. * -.. * $Id$ -.. * $HeadURL$ -.. * %% -.. * Copyright (C) 2009 - 2010 CodeLutin -.. * %% -.. * This program is free software: you can redistribute it and/or modify -.. * it under the terms of the GNU Lesser General Public License as -.. * published by the Free Software Foundation, either version 3 of the -.. * License, or (at your option) any later version. -.. * -.. * This program is distributed in the hope that it will be useful, -.. * but WITHOUT ANY WARRANTY; without even the implied warranty of -.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.. * GNU General Lesser Public License for more details. -.. * -.. * You should have received a copy of the GNU General Lesser Public -.. * License along with this program. If not, see -.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. -.. * #L% -.. - -====================================== -Générer son modèle métier vers Wikitty -====================================== - -Modélisation -============ - -Vous pouvez modéliser votre modèle métier en utilisant n'importe quel modéliseur -UML pouvant enregistrer le modèle au format xmi (ArgoUML, Topcased,...). Les -entités que vous souhaiter générer doivent avoir le stéréotype *entity*. - -Configuration Maven -=================== - -Pour générer le code, nous utilisons EUGene_ et son plugin Maven. - -Dans le pom de votre projet, rajoutez la définition du plugin:: - - <plugin> - <groupId>org.nuiton.eugene</groupId> - <artifactId>maven-eugene-plugin</artifactId> - <version>2.2/version> - <executions> - <execution> - <id>api generator</id> - <phase>process-sources</phase> - <configuration> - <inputs> - <input>zargo:src/main/xmi/:*.zargo</input> - <input>classpath:model:/:wikitty.objectmodel - </input> - </inputs> - <fullPackagePath>your.app.package</fullPackagePath> - <defaultPackage>your.app.package</defaultPackage> - <extractedPackages> - your.app.package,org.nuiton.wikitty - </extractedPackages> - <generatedPackages>your.app.package</generatedPackages> - <templates> - org.nuiton.wikitty.generator.WikittyMetaGenerator, - org.nuiton.wikitty.generator.WikittyDTOGenerator - </templates> - </configuration> - <goals> - <goal>smart-generate</goal> - </goals> - </execution> - </executions> - </plugin> - -Dans la section *inputs*, on spécifie le(s) modèle(s) métier:: - - zargo:src/main/xmi/:*.zargo - -ainsi que le modèle Wikitty (en cas de dépendance de votre modèle métier vers le -modèle Wikitty). - -Dans la section *templates*, vous pouvez spécifier quoi générer : -*org.nuiton.wikitty.generator.WikittyMetaGenerator* pour la génération Wikitty -standard et *org.nuiton.wikitty.generator.WikittyDTOGenerator* pour la -génération des DTOs si besoin. - -Génération -========== - -La génération est effectuée ensuite à chaque fois que vous lancez un build. - -Subtilités de modélisation -========================== - -Dépendances vers l'API de Wikitty ---------------------------------- - -Il est possible de rajouter une dépendance vers un objet de l'API Wikitty (par -example WikittyUser) en rajoutant simplement la classe dans votre modèle dans le -package* org.nuiton.wikitty.api*. Elle ne sera pas générée mais interviendra -comme une autre classe de votre modèle (héritage,...). - -Arbres ------- - -Si vous souhaitez qu'une entité crée un arbre, vous avez juste à faire hériter -cette entité de WikittyTreeNode (pas besoin de référence sur elle-même). De -cette manière, la gestion de l'arbre est assurée par Wikity, de même que -l'indexation et la recherche. - -.. _EUGene::http://maven-site.nuiton.org/eugene/ \ No newline at end of file Deleted: trunk/src/site/rst/hessian.rst =================================================================== --- trunk/src/site/rst/hessian.rst 2011-02-16 21:37:57 UTC (rev 712) +++ trunk/src/site/rst/hessian.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -1,88 +0,0 @@ -.. - -.. * #%L -.. * Wikitty -.. * -.. * $Id$ -.. * $HeadURL$ -.. * %% -.. * Copyright (C) 2009 - 2010 CodeLutin -.. * %% -.. * This program is free software: you can redistribute it and/or modify -.. * it under the terms of the GNU Lesser General Public License as -.. * published by the Free Software Foundation, either version 3 of the -.. * License, or (at your option) any later version. -.. * -.. * This program is distributed in the hope that it will be useful, -.. * but WITHOUT ANY WARRANTY; without even the implied warranty of -.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.. * GNU General Lesser Public License for more details. -.. * -.. * You should have received a copy of the GNU General Lesser Public -.. * License along with this program. If not, see -.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. -.. * #L% -.. - -Hessian -======= - -Wikitty fournit de base les modules nécéssaires à une utilisation de type -client serveur basé sur hessian. - -Il est composé : - - * d'une application war qui, en lisant une configuration, est capable de - fournir un service sur n'importe quel type de stockage wikitty - * d'une factory revoyant un proxy sur un service distant - -Serveur -------- - -Le serveur est disponible sous forme d'une application web (war) prete à -l'emploi. Vous pouvez la télécharger à l'adresse suivante : -http://www.nuiton.org/projects/list_files/wikitty - -Par défaut, cette application web se base sur le fichier de configuration -``/etc/wikitty-hessian.properties`` (sous linux). Ce fichier de configuration -contient 3 options de configuration spécifique à hessian: - - * wikitty.hessian.usecache : ajout du cache - * wikitty.hessian.usenotification : ajout de la notification - * wikitty.hessian.usesecurity : ajout de la securité - -Ensuite, le fichier de configuration contient la configuration specifique -à l'implementation du stockage à utiliser. - -Voici un exemple de configuration:: - - # security - wikitty.hessian.usesecurity=true - wikitty.service.login=xxxx - wikitty.service.password=zzzz - - # notification - wikitty.hessian.usenotification=true - wikitty.service.event.jgroupschannelname=myjgroupchannel - wikitty.service.event.propagateEvent=false - - # cache - wikitty.hessian.usecache=true - wikitty.service.cache.listenevents=true - - # solr configuration - solr.data.dir=/var/lib/myapp/solr - -L'application est ensuite accessible sur l'uri "/wikitty" suivant le contexte -de déploiement. -Par exemple : http://localhost:8080/myapp/wikitty - -Client ------- - -L'interface sur le service s'obtient en utilisant la factory disponible -dans le modules ``wikitty-hessian-client``. - -Example:: - - WikittyService service = getWikittyService("http://localhost/wikitty"); - -Le ``service`` s'utilise ensuite comme un service local. Deleted: trunk/src/site/rst/migration.rst =================================================================== --- trunk/src/site/rst/migration.rst 2011-02-16 21:37:57 UTC (rev 712) +++ trunk/src/site/rst/migration.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -1,87 +0,0 @@ -.. - -.. * #%L -.. * Wikitty -.. * -.. * $Id$ -.. * $HeadURL$ -.. * %% -.. * Copyright (C) 2009 - 2010 CodeLutin -.. * %% -.. * This program is free software: you can redistribute it and/or modify -.. * it under the terms of the GNU Lesser General Public License as -.. * published by the Free Software Foundation, either version 3 of the -.. * License, or (at your option) any later version. -.. * -.. * This program is distributed in the hope that it will be useful, -.. * but WITHOUT ANY WARRANTY; without even the implied warranty of -.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -.. * GNU General Lesser Public License for more details. -.. * -.. * You should have received a copy of the GNU General Lesser Public -.. * License along with this program. If not, see -.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. -.. * #L% -.. - - -Gérer la migration des données dans Wikitty -------------------------------------------- - -Présentation -============ - -Dans Wikitty, la migration est effectuée à chaque fois que vous chargez un -objet. Si un objet est présent dans la base de donnée dans une ancienne version, -quand il est chargé depuis la base de donnée, il est automatiquement migré dans -la nouvelle version. De cette manière, vous pouvez éviter les migrations -coûteuses à l'initialisation. - -La seule chose à garder à l'esprit est que les données qui n'ont pas encore -été migrée sont encore indexées dans l'ancienne version et peuvent ne pas être -retournées par certaines requêtes. Si vous avez besoin que les données soient -indexées dans la nouvelle version, vous pouvez toujours migrer tous vos objets -à l'initialisation en chargeant les objets et en les enregistrant. - -Comment migrer proprement les données dans Wikitty -================================================== - -Après avoir lancé votre application et avant toutes vos requêtes, vous devez -enregistrer toutes les extensions dont votre application a besoin dans leur -dernière version:: - - store(myExtension); - -ou:: - - store(myEntityImpl.extensionMyEntity) - -Si vous avez des migrations spécifiques à effectuer, ajoutez au registre toutes -les migrations spécifiques des extensions:: - - WikittyExtensionMigration.migrationRegistry.put("myExtension", myMigrationClass); - -Vous pouvez maintenant utiliser vos données simplement, elles seront migrées -au chargement. - -Si vous voulez migrer vos objets avant de les utiliser (pour des histoires de -requêtes par exemple), pour chaque version, recherchez vos objets, restaurez -les puis enregistrez-les:: - - search(Client) - restore(Client) - store(Client) - -Attention au coût d'une indexation au vu du volume de données, il n'est pas -toujours judicieux de réindexer toutes les données. - -Migrations spécifiques -====================== - -Wikitty réalise une migration automatique en cas de champs supprimés, ajoutés -ou renommés (dans ce cas, il faut ajouter un tag renameFrom sur le champ). - -Pour toutes les autre migrations, vous devrez créer votre propre classe de -migration qui implémente WikittyExtensionMigration. Cette classe n'a besoin de -faire la migration d'une version à l'autre, par exemple de la version 1 à la -version 2. Dans le cas d'une migration de la version 1 à la version 4, Wikitty -appellera automatiquement les classes pour migrer de la version 1 à la version 2 -puis de la version 2 à la version 3 et ainsi de suite. \ No newline at end of file Copied: trunk/src/site/rst/user/generation.rst (from rev 694, trunk/src/site/rst/generation.rst) =================================================================== --- trunk/src/site/rst/user/generation.rst (rev 0) +++ trunk/src/site/rst/user/generation.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -0,0 +1,111 @@ +.. - +.. * #%L +.. * Wikitty +.. * +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 2009 - 2010 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - +====================================== +Générer son modèle métier vers Wikitty +====================================== + +Modélisation +============ + +Vous pouvez modéliser votre modèle métier en utilisant n'importe quel modéliseur +UML pouvant enregistrer le modèle au format xmi (ArgoUML, Topcased,...). Les +entités que vous souhaiter générer doivent avoir le stéréotype *entity*. + +Configuration Maven +=================== + +Pour générer le code, nous utilisons EUGene_ et son plugin Maven. + +Dans le pom de votre projet, rajoutez la définition du plugin:: + + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>maven-eugene-plugin</artifactId> + <version>2.2/version> + <executions> + <execution> + <id>api generator</id> + <phase>process-sources</phase> + <configuration> + <inputs> + <input>zargo:src/main/xmi/:*.zargo</input> + <input>classpath:model:/:wikitty.objectmodel + </input> + </inputs> + <fullPackagePath>your.app.package</fullPackagePath> + <defaultPackage>your.app.package</defaultPackage> + <extractedPackages> + your.app.package,org.nuiton.wikitty + </extractedPackages> + <generatedPackages>your.app.package</generatedPackages> + <templates> + org.nuiton.wikitty.generator.WikittyMetaGenerator, + org.nuiton.wikitty.generator.WikittyDTOGenerator + </templates> + </configuration> + <goals> + <goal>smart-generate</goal> + </goals> + </execution> + </executions> + </plugin> + +Dans la section *inputs*, on spécifie le(s) modèle(s) métier:: + + zargo:src/main/xmi/:*.zargo + +ainsi que le modèle Wikitty (en cas de dépendance de votre modèle métier vers le +modèle Wikitty). + +Dans la section *templates*, vous pouvez spécifier quoi générer : +*org.nuiton.wikitty.generator.WikittyMetaGenerator* pour la génération Wikitty +standard et *org.nuiton.wikitty.generator.WikittyDTOGenerator* pour la +génération des DTOs si besoin. + +Génération +========== + +La génération est effectuée ensuite à chaque fois que vous lancez un build. + +Subtilités de modélisation +========================== + +Dépendances vers l'API de Wikitty +--------------------------------- + +Il est possible de rajouter une dépendance vers un objet de l'API Wikitty (par +example WikittyUser) en rajoutant simplement la classe dans votre modèle dans le +package* org.nuiton.wikitty.api*. Elle ne sera pas générée mais interviendra +comme une autre classe de votre modèle (héritage,...). + +Arbres +------ + +Si vous souhaitez qu'une entité crée un arbre, vous avez juste à faire hériter +cette entité de WikittyTreeNode (pas besoin de référence sur elle-même). De +cette manière, la gestion de l'arbre est assurée par Wikity, de même que +l'indexation et la recherche. + +.. _EUGene::http://maven-site.nuiton.org/eugene/ \ No newline at end of file Property changes on: trunk/src/site/rst/user/generation.rst ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Copied: trunk/src/site/rst/user/hessian.rst (from rev 694, trunk/src/site/rst/hessian.rst) =================================================================== --- trunk/src/site/rst/user/hessian.rst (rev 0) +++ trunk/src/site/rst/user/hessian.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -0,0 +1,88 @@ +.. - +.. * #%L +.. * Wikitty +.. * +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 2009 - 2010 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - +Hessian +======= + +Wikitty fournit de base les modules nécéssaires à une utilisation de type +client serveur basé sur hessian. + +Il est composé : + + * d'une application war qui, en lisant une configuration, est capable de + fournir un service sur n'importe quel type de stockage wikitty + * d'une factory revoyant un proxy sur un service distant + +Serveur +------- + +Le serveur est disponible sous forme d'une application web (war) prete à +l'emploi. Vous pouvez la télécharger à l'adresse suivante : +http://www.nuiton.org/projects/list_files/wikitty + +Par défaut, cette application web se base sur le fichier de configuration +``/etc/wikitty-hessian.properties`` (sous linux). Ce fichier de configuration +contient 3 options de configuration spécifique à hessian: + + * wikitty.hessian.usecache : ajout du cache + * wikitty.hessian.usenotification : ajout de la notification + * wikitty.hessian.usesecurity : ajout de la securité + +Ensuite, le fichier de configuration contient la configuration specifique +à l'implementation du stockage à utiliser. + +Voici un exemple de configuration:: + + # security + wikitty.hessian.usesecurity=true + wikitty.service.login=xxxx + wikitty.service.password=zzzz + + # notification + wikitty.hessian.usenotification=true + wikitty.service.event.jgroupschannelname=myjgroupchannel + wikitty.service.event.propagateEvent=false + + # cache + wikitty.hessian.usecache=true + wikitty.service.cache.listenevents=true + + # solr configuration + solr.data.dir=/var/lib/myapp/solr + +L'application est ensuite accessible sur l'uri "/wikitty" suivant le contexte +de déploiement. +Par exemple : http://localhost:8080/myapp/wikitty + +Client +------ + +L'interface sur le service s'obtient en utilisant la factory disponible +dans le modules ``wikitty-hessian-client``. + +Example:: + + WikittyService service = getWikittyService("http://localhost/wikitty"); + +Le ``service`` s'utilise ensuite comme un service local. Property changes on: trunk/src/site/rst/user/hessian.rst ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Copied: trunk/src/site/rst/user/migration.rst (from rev 694, trunk/src/site/rst/migration.rst) =================================================================== --- trunk/src/site/rst/user/migration.rst (rev 0) +++ trunk/src/site/rst/user/migration.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -0,0 +1,87 @@ +.. - +.. * #%L +.. * Wikitty +.. * +.. * $Id$ +.. * $HeadURL$ +.. * %% +.. * Copyright (C) 2009 - 2010 CodeLutin +.. * %% +.. * This program is free software: you can redistribute it and/or modify +.. * it under the terms of the GNU Lesser General Public License as +.. * published by the Free Software Foundation, either version 3 of the +.. * License, or (at your option) any later version. +.. * +.. * This program is distributed in the hope that it will be useful, +.. * but WITHOUT ANY WARRANTY; without even the implied warranty of +.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.. * GNU General Lesser Public License for more details. +.. * +.. * You should have received a copy of the GNU General Lesser Public +.. * License along with this program. If not, see +.. * <http://www.gnu.org/licenses/lgpl-3.0.html>. +.. * #L% +.. - + +Gérer la migration des données dans Wikitty +------------------------------------------- + +Présentation +============ + +Dans Wikitty, la migration est effectuée à chaque fois que vous chargez un +objet. Si un objet est présent dans la base de donnée dans une ancienne version, +quand il est chargé depuis la base de donnée, il est automatiquement migré dans +la nouvelle version. De cette manière, vous pouvez éviter les migrations +coûteuses à l'initialisation. + +La seule chose à garder à l'esprit est que les données qui n'ont pas encore +été migrée sont encore indexées dans l'ancienne version et peuvent ne pas être +retournées par certaines requêtes. Si vous avez besoin que les données soient +indexées dans la nouvelle version, vous pouvez toujours migrer tous vos objets +à l'initialisation en chargeant les objets et en les enregistrant. + +Comment migrer proprement les données dans Wikitty +================================================== + +Après avoir lancé votre application et avant toutes vos requêtes, vous devez +enregistrer toutes les extensions dont votre application a besoin dans leur +dernière version:: + + store(myExtension); + +ou:: + + store(myEntityImpl.extensionMyEntity) + +Si vous avez des migrations spécifiques à effectuer, ajoutez au registre toutes +les migrations spécifiques des extensions:: + + WikittyExtensionMigration.migrationRegistry.put("myExtension", myMigrationClass); + +Vous pouvez maintenant utiliser vos données simplement, elles seront migrées +au chargement. + +Si vous voulez migrer vos objets avant de les utiliser (pour des histoires de +requêtes par exemple), pour chaque version, recherchez vos objets, restaurez +les puis enregistrez-les:: + + search(Client) + restore(Client) + store(Client) + +Attention au coût d'une indexation au vu du volume de données, il n'est pas +toujours judicieux de réindexer toutes les données. + +Migrations spécifiques +====================== + +Wikitty réalise une migration automatique en cas de champs supprimés, ajoutés +ou renommés (dans ce cas, il faut ajouter un tag renameFrom sur le champ). + +Pour toutes les autre migrations, vous devrez créer votre propre classe de +migration qui implémente WikittyExtensionMigration. Cette classe n'a besoin de +faire la migration d'une version à l'autre, par exemple de la version 1 à la +version 2. Dans le cas d'une migration de la version 1 à la version 4, Wikitty +appellera automatiquement les classes pour migrer de la version 1 à la version 2 +puis de la version 2 à la version 3 et ainsi de suite. \ No newline at end of file Property changes on: trunk/src/site/rst/user/migration.rst ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/src/site/rst/user/security.rst =================================================================== --- trunk/src/site/rst/user/security.rst (rev 0) +++ trunk/src/site/rst/user/security.rst 2011-02-21 14:17:58 UTC (rev 713) @@ -0,0 +1,111 @@ +Utiliser la sécurité dans Wikitty +================================= + +Wikitty fournit un système de gestion des droits en lecture et en écriture pour +les entitées. Vous pouvez aller jusqu'à limiter l'accès à certains objet d'un +type à certains utilisateurs. Vous pouvez également accorder des droits +différents à certains champs des objets. + +Ajouter la couche de sécurité +----------------------------- + +Pour mettre en place la sécurité dans Wikitty, il suffit de rajouter +``org.nuiton.wikitty.services.WikittyServiceSecurity`` dans la liste des +composants à utiliser de votre configuration:: + + wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceStorage,\ + org.nuiton.wikitty.services.WikittyServiceCached,\ + org.nuiton.wikitty.services.WikittyServiceSecurity + +Cela rajoute la couche de sécurité à Wikitty. Vous pouvez maintenant rajouter +des droits à certaines entitées pour en limiter l'accès. + +Création de l'administrateur de l'application +--------------------------------------------- + +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 +utilisateurs sont AppAdmin. Cela est nécessaire pour deux choses: + +- pour permettre d'avoir une authentification, mais que l'on ne souhaite pas de + gestion d'autorisation. + +- 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. + +Il ne doit donc exister un seul *WikittyGroup* portant le nom +**WikittyAppAdmin** + +La première chose à faire maintenant, est donc de créer l'utilisateur +administrateur de l'application et l'ajouter au groupe **WikittyAppAdmin**:: + + WikittyUser admin = new WikittyUserImpl(); + admin.setLogin("admin"); + admin.setPassword("admin"); + admin = proxy.store(admin); + + WikittyGroup adminGroup = WikittySecurityUtil.createAppAdminGroup(admin); + +Jouer avec les droits sur une entité (sécurité de niveau 1) +----------------------------------------------------------- + +A partir de maintenant, l'utilisateur administrateur (et tous les autres +utilisateurs faisant partie du groupe des **AppAdmin**) peut ajouter/retirer +des droits à des entités. + +Par exemple, pour rajouter les droits de lecture a un utilisateur (l'utilisateur +admin est déjà identifié) sur un wikitty:: + + //On commence par charger les wikittys concernés + WikittyAuthorisation skill = proxy.restore(WikittyAuthorisation.class, id); + + //On ajoute en reader notre utilisateur + skill.addReader(user.getWikittyId()); + + //On enregistre + proxy.store(skill); + +On peut de la même manière ajouter un groupe en tant que +reader/writer/owner/admin d'une entité. + +Les droits sont les suivants : + ++----------+---------+----------+-------------+----------------------+ +| Type | Lecture | Ecriture | Suppression | Changement de droits | ++==========+=========+==========+=============+======================+ +| Reader | X | | | | ++----------+---------+----------+-------------+----------------------+ +| Writer | X | X | | | ++----------+---------+----------+-------------+----------------------+ +| Owner | X | X | X | | ++----------+---------+----------+-------------+----------------------+ +| Admin | X | X | X | X | ++----------+---------+----------+-------------+----------------------+ +| AppAdmin | X | X | X | X | ++----------+---------+----------+-------------+----------------------+ + +Si on veut que tout le monde puisse lire un wikitty, il faut laisser vide la +liste des readers (vide ou null). + +Si l'on souhaite indiquer que personne ne peut lire l'objet il faut mettre le +owner en tant que reader. Car de toute façon l'owner aura toujours le droit +en lecture. + +L'authentification +------------------ + +À chaque login, un token de sécurité est fourni à l'utilisateur. L'utilisateur +doit fournir ce token à chaque opération pour montrer qu'il a les droits. +Pour un token donné, on peut savoir à quel utilisateur il appartient. Pour le +développeur, cela n'implique pas de changement car le token de sécurité est +conservé par le **WikittyProxy**. Il faut juste faire attention à bien avoir un +WikittyProxy par utilisateur. Dans le cas d'applications web, il est conseillé +de conserver le proxy dans la session de l'utilisateur. + +Les tokens sont stockés en base et supprimés au logout de l'utilisateur. + +Les SecurityToken ne sont supprimés de la base de données qu'au moment du logout +Si les utilisateurs/applications quittent sans faire le logout le nombre de +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. \ No newline at end of file Modified: trunk/src/site/site_fr.xml =================================================================== --- trunk/src/site/site_fr.xml 2011-02-16 21:37:57 UTC (rev 712) +++ trunk/src/site/site_fr.xml 2011-02-21 14:17:58 UTC (rev 713) @@ -53,13 +53,14 @@ <item name="Changements" href="changes.html"/> </menu> - <menu name="User"> - <item name="Generation" href="generation.html"/> - <item name="Migration" href="migration.html"/> - <item name="Hessian" href="hessian.html"/> + <menu name="Utilisateur"> + <item name="Génération" href="user/generation.html"/> + <item name="Migration" href="user/migration.html"/> + <item name="Hessian" href="user/hessian.html"/> + <item name="Sécurité" href="user/security.html"/> </menu> - <menu name="Developer"> + <menu name="Developpeur"> <item name="Todo" href="todo.html"/> </menu>
participants (1)
-
jcouteau@users.nuiton.org