Sp��cifications wikitty publication site
=======================================
:Authors: Mano��l Fortun


Contexte, Int��r��t
*****************

Wikitty publication permet de construire une application et de la stocker dans
un wikitty, ensuite via l'interface web de wikitty publication l'application 
peut s'��x��cuter. Actuellement cette partie de publication permet de "publier"
des pages qui contiennent du javascript et wikitty publication permet
leur affichage et ex��cution des javascript. 

Le travail sur cette partie de wikitty publication consiste donc �� compl��ter
les fonctionnalit��s existantes, corriger les bugs pr��sents, et enrichir
le nombre de langage support��s �� l'interpr��tation.


Fonctionnalit��s
***************

Login/logout
------------

L'interface web doit pouvoir g��rer un syst��me de login avec sauvegarde
de cookie pour la navigation. Le token de s��curit�� sera contenu dans le
cookie.  En cas de succ��s si dans les arguments on retrouve les actions 
�� faire on les faits sinon on affiche simplement le r��sultat. 

L'action �� ��x��cuter en cas d'erreur du login ou du logout, ne doit pas
se retrouver dans l'url. Ce doit ��tre param��trable dans un fichier de propri��t��.

  /login?login=moi&password=xxxx&succes=/eval/Wiki/WikiHello

Si on a l'argument logout de pr��sent dans les param��tres alors un
logout est forc��. Par d��faut si on demande un login et que
l'utilisateur ��tait d��j�� loggu�� alors un logout est aussi fait avant
la nouvelle authentification.

  /login?logout&succes=/eval/Wiki/WikiHello

Il faudra demander �� l'utilisateur de se loguer si l'action qu'il essaye
d'entreprendre �� besoin de droits. On pourra alors se retrouver dans la
situation ou l'action �� ��x��cuter apr��s le login se trouve dans l'url.



Gestion des droits
------------------

En sus d'une gestion d'authentification, il faudrait mettre en place un syst��me
permettant de g��rer des droits utilisateurs sur les diff��rents wikitty 
stocker au sein de wikitty publication, ainsi que les actions qu'un utilisateur
peut faire sur un wikitty.

Une solution envisageable est la cr��ation d'un objet wikitty, qui autoriserait
des actions nomm��s �� sur des wikittys d'un certain label, cet objet wikitty
poss��derais aussi un label, permettant de d��finir les droits sur cet objet 
et donc qui pourrait modifier ces droits. Cet objet wikitty poss��derait un 
wikittyGroup qui lui m��me poss��derait des wikittyUsers ou directement des
wikittyUser.

* WikittyAuth
      * users: WikittyGroup //groupe des users poss��dant les droits
      * target: WikittyLabel //les labels concern�� par les droit
      * action: Collection // action autoris�� par ce droit
      * label:String // le label permettant de d��terminer qui �� les droit sur
                    // ce wikitty

On pourrait m��me penser �� la possibilit�� de sync de ces wikitty avec la partie
synchronisation de wikitty publication, et donc les transmettrent �� un autre
wikitty service.

La v��rification de la l��gitimit�� d'une action d'un user se ferais en 
recherchant le wikittyAuth qui autorise l'action sur le lable concern��
et v��rifier si l'utilisateur appartiens au groupe concern��.

Le fait de mettre un label sur le wikittyAuth permet de cr��er plusieurs 
classes de droit et d'utilisateur. On pourra avoir le "super" droit 
donc le label target serait "." le "p��re" de tout les labels, dont le label
serait aussi ".".

Cel�� permettra la gestion des droits par r��cursion sur les labels.

Gestion multicontexte
---------------------

Les applications que wikitty publication va pouvoir ��x��cuter peuvent ��tre 
amen�� �� manipuler des donn��s, il doit ��tre possible de d��finir que les 
donn��es manipul��e soit stocker dans un autre wikitty service. 

La solution pourrait ��tre un nouvel objet de type wikitty d��finissant 
que pour les applications poss��dant un certain label, les donn��es 
devront ��tre stock�� sur un autre wikitty service.

On pourrait avoir cette objet qui contiendrais un wikitty label, un attribut
avec l'adresse du wikitty service pour les datas.

Et les donn��es de toutes les applications sous ces labels seront sur le wikitty
service d��sign��.

*      WikittyContexteHandler
         * wikittyServiceDataUrl: String // adresse du wikitty pour les donn��es
         * labels: WikittyLabel // label concern��s

Il est possible que se baser sur les labels soit une entreprise p��rilleuse,
mais cel�� permettrais de donner une seconde utilit��, en plus de celle permettant
de d��terminer le path d'un fichier.

Il sera n��cessaire qu'au plus un wikittyContexteHandler existe pour un label 
donn��, sinon le probl��me de quels wikittyService utiliser pour les donn��es
sera ind��cidable. Par d��faut si ce wikitty n'existe pas les donn��es seront
manipul�� sur le m��me wikitty service que l'application. 

L'avantage de stocker la configuration pour le "multicontexte" dans un objet
wikitty permet ensuite d'avoir l'information facilement et de exporter vers
un autre wikitty service avec la partie sync de wikitty publication si besoin.


Moteur de script
----------------

Ajouter plus de langage support�� �� l'interpr��tation par wikitty publication, 
en rajouter le plus possible, en fonction de ce qui est disponible pour java
en librairie libre.


