<?xml version="1.0"?>
<!DOCTYPE webpage PUBLIC "-//Norman Walsh//DTD Website V2.1b1//EN" "../../../dtd/website.dtd" [
  <!ENTITY actions_generalites SYSTEM "actions_generalites.xml" NDATA XML>
  <!ENTITY actions_identification SYSTEM "actions_identification.xml" NDATA XML>
  <!ENTITY actions_localisation SYSTEM "actions_localisation.xml" NDATA XML>
  <!ENTITY parametres SYSTEM "actions_parametres.xml" NDATA XML>
]>

<webpage id="actions_gestion">

  <head>
	<title lang="fr">Gestion des droits</title>
	<titleabbrev lang="fr">Droits</titleabbrev>
	<author lang="fr"><firstname>Malo</firstname><surname>Pichot</surname><affiliation><orgname>AJLSM</orgname></affiliation></author><revhistory>
	  <revision lang="fr">
		<revnumber>1.0</revnumber><date>2003-11-26</date>
	  </revision>
	</revhistory>
  </head>

  <itemizedlist>
	<title>Liste des actions décrites dans cette page : </title>
	<listitem>
	  <para><ulink url="#sdx_userisadmin"><sgmltag class="element">sdx:userIsAdmin</sgmltag></ulink> ; </para>
	</listitem><listitem>
	  <para><ulink url="#sdx_userismember"><sgmltag class="element">sdx:userIsMember</sgmltag></ulink> ; </para>
	</listitem><listitem>
	  <para><ulink url="#sdx_userissu"><sgmltag class="element">sdx:userIsSu</sgmltag></ulink> ; </para>
	</listitem><listitem>
	  <para><ulink url="#sdx_userisadminorsu"><sgmltag class="element">sdx:userIsAdminOrSu</sgmltag></ulink>.</para>
	</listitem>
  </itemizedlist>
  <section id="concepts" lang="fr">
	<title>Concepts clés</title>
	<para>La section
	  <olink targetdocent="actions_identification">"Identification"</olink> présente les actions SDX utilisées pour identifier un utilisateur. Les outils SDX décrits ici permettent d'identifier plusieurs profils d'utilisateurs au sein d'applications.</para>
	<variablelist>
	  <title>Liste des profils définis dans SDX</title>
	  <varlistentry><term>Utilisateur anonyme</term><listitem>
		  <para>C'est l'utilisateur par défaut, qu'une action d'identification n'ait pas eu lieu ou qu'elle n'ait pas été menée avec succès. Lors d'une déconnexion (cf.
			<olink localinfo="sdx_logout" targetdocent="actions_identification"><sgmltag class="element">sdx:logout</sgmltag></olink>), l'utilisateur courant devient automatiquement un utilisateur anonyme.</para>
		</listitem></varlistentry><varlistentry><term>Utilisateur connu</term><listitem>
		  <para>SDX permet de donner un certain nombre d'informations sur un utilisateur (voir l'application d'administration sur serveur de SDX <literal>{serveur sdx}/sdx/admin/</literal>) : un identifiant (<sgmltag class="attribute">id</sgmltag>), un nom (<sgmltag class="attribute">lastname</sgmltag>), un prénom (<sgmltag class="attribute">firstname</sgmltag>), une adresse électronique (<sgmltag class="attribute">email</sgmltag>), un mot de passe, un ou des groupes (<sgmltag class="attribute">group</sgmltag>) décrits ci-après.</para>
		</listitem></varlistentry><varlistentry><term>Utilisateur membre d'un groupe</term><listitem>
		  <para>SDX permet de créer des groupes d'utilisateurs. Par défaut, il existe au moins un groupe d'administrateurs regroupant au moins un administrateur d'application (élément <sgmltag class="element">&lt;sdx:admin groupId="admins" userId="admin" userPassword=""/&gt;</sgmltag> dans le fichier <filename>application.xconf</filename>). Un utilisateur connu peut ainsi être défini comme membre du groupe des administrateurs. Il est possible de définir autant de groupes que de types d'accès à une application (par exemple, dans un ordre de responsabilité croissant, "<literal>lecteur inexpérimenté</literal>" ; "<literal>lecteur expérimenté</literal>" ; "<literal>rédacteur de documents</literal>" ; etc.). Ce système est très commode afin de prévoir des stratégies d'actions (par exemple, choix d'un affichage de documents suivant l'appartenance à un groupe ou un autre).</para>
		</listitem></varlistentry><varlistentry><term>Administrateur</term><listitem>
		  <para>L'administrateur est désigné pour... administrer une application ! C'est logiquement la plus haute autorité dans le contexte d'une application. C'est à lui que revient l'alimentation des bases (les bases de documents comme la base des utilisateurs).</para>
		</listitem></varlistentry><varlistentry><term>Super-utilisateur</term><listitem>
		  <para>Le super-utilisateur est au plus niveau de responsabilité puisqu'il administre directement le serveur SDX hébergeant les applications. Logiquement, il n'administre pas les applications elles-mêmes, mais on peut comprendre qu'il soit confondu avec l'administrateur décrit plus haut.</para>
		</listitem></varlistentry></variablelist>
  </section>
  <section lang="fr" id="sdx_userisadmin">
	<title><sgmltag class="element">sdx:userIsAdmin</sgmltag>(CHECK)</title>
	<para><sgmltag class="element">sdx:userIsAdmin</sgmltag> permet d'identifier l'administrateur d'une application. L'action admettant certains paramètres communs de localisation, cela signifie que l'on peut identifier l'administrateur d'une application A au sein d'une application B.</para>
	<informaltable lang="fr">
	  <tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="1.00*"/><colspec colnum="2" colname="col2" colwidth="4.05*"/><tbody>
		  <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename>sdx-actions.xsl</filename></entry>
		  </row>
		  <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2">N'importe où dans un
			  <olink localinfo="sdx_page" targetdocent="actions_generalites"><sgmltag class="element">sdx:page</sgmltag></olink>.</entry>
		  </row>
		  <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2">N'importe quel élément <sgmltag class="element">sdx:*</sgmltag> ou autre. Ces éléments seront traités si l'identification réussit, et dans ce cas le sous-élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> ne sera pas exécuté. Si l'identification échoue, seul l'élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> sera exécuté.</entry>
		  </row></tbody>
	  </tgroup>
	</informaltable><table id="sdx_userisadmin_param">
	<title>Paramètres communs</title>
	<tgroup cols="4"><colspec colnum="1" colname="col1" colwidth="1.55*"/><colspec colnum="2" colname="col2" colwidth="3.47*"/><colspec colnum="3" colname="col3" colwidth="2.38*"/><colspec colnum="4" colname="col4" colwidth="1.00*"/><thead>
		<row><entry colname="col1">Nom</entry><entry colname="col2">Description</entry><entry colname="col3">Elément correspondant</entry><entry colname="col4"></entry>
		</row></thead><tbody>
		<row><entry colname="col1"><sgmltag class="attribute">app</sgmltag></entry><entry colname="col2">L'identifiant de l'application. Par défaut, il s'agit de l'application courante.</entry><entry colname="col3"><olink localinfo="sdx_app" targetdocent="actions_localisation"><sgmltag class="element">sdx:app</sgmltag></olink></entry><entry colname="col4">Facultatif (FIXME)</entry>
		</row>
		<row><entry colname="col1"><sgmltag class="attribute">appbypath</sgmltag></entry><entry colname="col2">Indique la partie de l'URL qui suit "<literal>sdx/</literal>" dans une installation standard, par exemple "<literal>sdxtest</literal>".</entry><entry colname="col3"><olink localinfo="sdx_app" targetdocent="actions_localisation"><sgmltag class="element">sdx:app</sgmltag></olink></entry><entry colname="col4">Facultatif</entry>
		</row>
	  </tbody>
	</tgroup></table>
	<example lang="fr" id="exemple_sdx_userisadmin_01">
	  <title>Identification de l'administrateur</title>
	  <para>Dans l'exemple suivant, la page XSP génère l'action d'indexation si l'utilisateur courant est identifié comme administrateur de l'application A. Si l'identification échoue, elle génère l'action de connexion.</para>
	  <programlisting>
&lt;sdx:page&gt;
 &lt;sdx:userIsAdmin app="A"&gt;
  &lt;sdx:uploadDocument/&gt;
  &lt;sdx:fallback&gt;
   &lt;sdx:login/&gt;
  &lt;/sdx:fallback&gt;
&lt;/sdx:page&gt;
</programlisting>
	</example>
  </section>
  <section lang="fr" id="sdx_userismember">
	<title><sgmltag class="element">sdx:userIsMember</sgmltag></title>
	<para><sgmltag class="element">sdx:userIsMember</sgmltag> permet de tester l'appartenance à un ou plusieurs groupes d'utilisateurs.</para>
	<informaltable lang="fr">
	  <tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="*"/><colspec colnum="2" colname="col2" colwidth="*"/><tbody>
		  <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename>sdx-actions.xsl</filename></entry>
		  </row>
		  <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2">N'importe où dans un
			  <olink localinfo="sdx_page" targetdocent="actions_generalites"><sgmltag class="element">sdx:page</sgmltag></olink>.</entry>
		  </row>
		  <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2">N'importe quel élément <sgmltag class="element">sdx:*</sgmltag> ou autre. Ces éléments seront traités si l'identification réussit, et dans ce cas le sous-élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> ne sera pas exécuté. Si l'identification échoue, seul l'élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> sera exécuté.</entry>
		  </row></tbody>
	  </tgroup>
	</informaltable><table lang="fr" id="sdx_userismember_param">
	<title>Paramètres spécifiques</title>
	<tgroup cols="3"><colspec colnum="1" colname="col1" colwidth="1.13*"/><colspec colnum="2" colname="col2" colwidth="4.26*"/><colspec colname="col3" colnum="3" colwidth="1.00*"/><thead>
		<row><entry colname="col1">Nom</entry><entry colname="col2">Description</entry><entry colname="col3"></entry>
		</row></thead><tbody>
		<row><entry colname="col1"><sgmltag class="attribute">group</sgmltag></entry><entry colname="col2">Identifiant du groupe d'utilisateur.</entry><entry colname="col3">Obligatoire</entry>
		</row>
		<row><entry colname="col1"><sgmltag class="attribute">op</sgmltag></entry><entry colname="col2">Opérateur booléen. Ceci permet de construire un test d'identification plus complexe. Par défaut, SDX emploie une <literal>ou</literal> logique.</entry><entry colname="col3">Facultatif</entry>
		</row></tbody>
	</tgroup></table><table id="sdx_userismember_param_comm">
	<title>Paramètres communs</title>
	<tgroup cols="4"><colspec colnum="1" colname="col1" colwidth="1.55*"/><colspec colnum="2" colname="col2" colwidth="3.47*"/><colspec colnum="3" colname="col3" colwidth="2.38*"/><colspec colnum="4" colname="col4" colwidth="1.00*"/><thead>
		<row><entry colname="col1">Nom</entry><entry colname="col2">Description</entry><entry colname="col3">Elément correspondant</entry><entry colname="col4"></entry>
		</row></thead><tbody>
		<row><entry colname="col1"><sgmltag class="attribute">app</sgmltag></entry><entry colname="col2">L'identifiant de l'application.</entry><entry colname="col3"><olink localinfo="sdx_app" targetdocent="actions_localisation"><sgmltag class="element">sdx:app</sgmltag></olink></entry><entry colname="col4">Facultatif</entry>
		</row>
		<row><entry colname="col1"><sgmltag class="attribute">appbypath</sgmltag></entry><entry colname="col2">Indique la partie de l'URL qui suit "<literal>sdx/</literal>" dans une installation standard, par exemple "<literal>sdxtest</literal>".</entry><entry colname="col3"><olink localinfo="sdx_app" targetdocent="actions_localisation"><sgmltag class="element">sdx:app</sgmltag></olink></entry><entry colname="col4">Facultatif</entry>
		</row>
	  </tbody>
	</tgroup></table>
	<example lang="fr">
	  <title>Palette d'actions en fonction de l'appartenance</title>
	  <para>Dans l'exemple suivant, on teste l'utilisateur selon son groupe d'appartenance. S'il est lecteur, rédacteur ou administrateur, il a accès à l'action d'exécution de la requête simple. Si, en plus, il est administrateur ou rédacteur, il peut indexer des documents. Enfin, s'il est administrateur, il a accès, en plus des deux actions précédentes, de supprimer des documents. Si l'utilisateur n'appartient à aucun groupe, il n'a aucun accès ; un message le prévient de l'obligation d'appartenir à un groupe. </para>
	  <programlisting>
&lt;sdx:page&gt;

 &lt;sdx:userIsMember op="or"&gt;
  &lt;sdx:parameter name="group" value="admin" /&gt;
  &lt;sdx:parameter name="group" value="redacteurs" /&gt;
  &lt;sdx:parameter name="group" value="lecteurs" /&gt;
  &lt;sdx:executeSimpleQuery/&gt;

  &lt;sdx:userIsMember op="or"&gt;
   &lt;sdx:parameter name="group" value="redacteurs" /&gt;

   &lt;sdx:uploadDocuments/&gt;

   &lt;sdx:userIsMember group="admin"&gt;
    &lt;sdx:deleteDocuments/&gt;
   &lt;/sdx:userIsMember&gt;

  &lt;/sdx:userIsMember

  &lt;sdx:fallback&gt;
   &lt;message type="groupe_obligatoire"/&gt;
  &lt;/sdx:fallback&gt;

 &lt;/sdx:userIsMember&gt;

&lt;/sdx:page&gt;
</programlisting>
	</example>
  </section>
  <section lang="fr" id="sdx_userissu">
	<title><sgmltag class="element">sdx:userIsSu</sgmltag></title>
	<para><sgmltag class="attribute">sdx:userIsSu</sgmltag> permet d'identifier le super-utilisateur ; c'est-à-dire l'administrateur du serveur SDX hébergeant les applications.</para>
	<informaltable lang="fr">
	  <tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="*"/><colspec colnum="2" colname="col2" colwidth="*"/><tbody>
		  <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename>sdx-actions.xsl</filename></entry>
		  </row>
		  <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2">N'importe où dans un
			  <olink localinfo="sdx_page" targetdocent="actions_generalites"><sgmltag class="element">sdx:page</sgmltag></olink>.</entry>
		  </row>
		  <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2">N'importe quel élément <sgmltag class="element">sdx:*</sgmltag> ou autre. Ces éléments seront traités si l'identification réussit, et dans ce cas le sous-élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> ne sera pas exécuté. Si l'identification échoue, seul l'élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> sera exécuté.</entry>
		  </row></tbody>
	  </tgroup>
	</informaltable>
	<para>Le super-utilisateur n'ayant aucun lien avec une application (il est administrateur du serveur SDX hébergeant les applications), l'action qui permet de l'identifier ne possède pas les paramètres communs d'identification d'une application comme les autres actions de cette section.</para>
  </section>
  <section lang="fr" id="sdx_userisadminorsu">
	<title><sgmltag class="element">sdx:userIsAdminOrSu</sgmltag></title>
	<para><sgmltag class="element">sdx:userIsAdminOrSu</sgmltag> permet d'identifier un administrateur que ce soit celui d'une application ou du serveur SDX.</para>
	<informaltable lang="fr">
	  <tgroup cols="2"><colspec colnum="1" colname="col1" colwidth="*"/><colspec colnum="2" colname="col2" colwidth="*"/><tbody>
		  <row><entry colname="col1">Code implémentant cette action</entry><entry colname="col2"><filename>sdx-actions.xsl</filename></entry>
		  </row>
		  <row><entry colname="col1">Contexte d'utilisation</entry><entry colname="col2">N'importe où dans un
			  <olink localinfo="sdx_page" targetdocent="actions_generalites"><sgmltag class="element">sdx:page</sgmltag></olink>.</entry>
		  </row>
		  <row><entry colname="col1">Contenu éventuel</entry><entry colname="col2">N'importe quel élément <sgmltag class="element">sdx:*</sgmltag> ou autre. Ces éléments seront traités si l'identification réussit, et dans ce cas le sous-élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> ne sera pas exécuté. Si l'identification échoue, seul l'élément
			  <olink targetdocent="parametres" localinfo="sdx_fallback"><sgmltag class="element">sdx:fallback</sgmltag></olink> sera exécuté.</entry>
		  </row></tbody>
	  </tgroup>
	</informaltable><table lang="fr" id="sdx_userisadminorsu_param">
	<title>Paramètres spécifiques</title>
	<tgroup cols="4"><colspec colnum="1" colname="col1" colwidth="1.55*"/><colspec colnum="2" colname="col2" colwidth="3.47*"/><colspec colnum="3" colname="col3" colwidth="2.38*"/><colspec colnum="4" colname="col4" colwidth="1.00*"/><thead>
		<row><entry colname="col1">Nom</entry><entry colname="col2">Description</entry><entry colname="col3">Elément correspondant</entry><entry colname="col4"></entry>
		</row></thead><tbody>
		<row><entry colname="col1"><sgmltag class="attribute">app</sgmltag></entry><entry colname="col2">L'identifiant de l'application.</entry><entry colname="col3"><olink localinfo="sdx_app" targetdocent="actions_localisation"><sgmltag class="element">sdx:app</sgmltag></olink></entry><entry colname="col4">Facultatif</entry>
		</row>
		<row><entry colname="col1"><sgmltag class="attribute">appbypath</sgmltag></entry><entry colname="col2">Indique la partie de l'URL qui suit "<literal>sdx/</literal>" dans une installation standard, par exemple "<literal>sdxtest</literal>".</entry><entry colname="col3"><olink localinfo="sdx_app" targetdocent="actions_localisation"><sgmltag class="element">sdx:app</sgmltag></olink></entry><entry colname="col4">Facultatif</entry>
		</row>
	  </tbody>
	</tgroup></table>
  </section>

</webpage>
