l3.cas-d-astre/doc/libsecuremenu.tex

100 lines
3.6 KiB
TeX
Raw Normal View History

2009-05-01 08:39:36 +00:00
\section{SecureMenu }
\par Cette classe permet la cr<63>ation d'un menu dont les
<EFBFBD>lements ({\em items}) ne seront affich<63>s qu'aux utilisateurs
ayant les droits d'acc<63>s suffisants pour y acc<63>der.
\subsection{Cr<EFBFBD>ation d'un menu}
Pour cr<63>er un menu, il suffit de cr<63>er un objet en appelant \verb+SecureMenu($level=0)+, o<> \verb+$level+ est le niveau d'acc<63>s n<>cessaire pour les futurs <20>lements du menus si les droits d'acc<63>s ne leurs sont pas explicitement fix<69>s.
Si \verb+$level+ n'est pas sp<73>cifi<66>, alors les <20>lements seront accessibles <20> tous par d<>faut.
\par Pour cr<63>er un menu il suffit donc de :
\lstset{language=PHP}
\begin{lstlisting}
$exempleMenu1=new SecureMenu();
$exempleMenu2=new SecureMenu();
\end{lstlisting}
\subsection{Ajouter des <20>lements}
\par Pour l'ajout d'un <20>lements, on fait appel <20> la fonction
\verb+addItem($identifiant,$titre,$page)+, o<> \verb+$identifiant+
est l'identifiant interne de l'<27>l<EFBFBD>ment du menu, \verb+$titre+ est
le titre de l'<27>l<EFBFBD>ment, tel qu'il appara<72>tra aux utilisateurs du menu,
\verb+$page+ est la page cible affich<63>e lors d'un clic sur l'<27>l<EFBFBD>ment
du menu.
\par Par exemple:
\lstset{language=PHP}
\begin{lstlisting}
$exempleMenu1->addItem("id_interne_sommaire",
"Sommaire",
"index.php");
$exempleMenu1->addItem("id_interne2",
"Definitions"
"lexique.php");
\end{lstlisting}
aura pour effet d'ajouter {\em "Sommaire"}\/ et {\em "Definitions"}\/ au menu, qui pointent
respectivement sur les pages "\verb+index.php+" et "\verb+lexique.php+"
\subsection{Gestion des droits}
\par Par d<>finition, une application utilisable par des utilisateurs n'ayant
pas le droit aux m<>mes actions, doit explicitement {\em restreindre} certaines
zones <20> certaines personnes.
\par Pour ce faire, il est n<>cessaire d'indiquer quels "les droits d'acc<63>s"
autoris<EFBFBD>s aux zones restreintes, et indiquer a ces zones le droit d'acc<63>s de
l'utilisateur actuel.
\subsubsection{Fixer les droits sur un <20>l<EFBFBD>ment}
\par Pour fixer un droit d'acc<63>s (qui r<>gira son affichage en fonction de l'utilisateur)
<EFBFBD> un <20>lement du menu, il suffit d'utiliser la m<>thode \verb+setItemLevel($identifiant,$level)+. Dans le prototype de cette fonction, \verb+$identifiant+ indique l'identifiant de
l'<27>l<EFBFBD>ment du menu (comme vu dans \verb+addItem(...)+) et \verb+$level+ est le "droit
d'acc<63>s minimum autoris<69>".
\subsubsection{Indiquer au menu les droits actuels}
\par Afin que le menu soit utilisable, il est n<>cessaire d'indiquer au menu les
droits de l'utilisateur courant par la m<>thode \verb+setCurrentLevel($level)+, o<>
\verb+$level+ est le "droit d'acc<63>s" de l'utilisateur courrant.
Par exemple :
\lstset{language=PHP}
\begin{lstlisting}
$menu=new SecureMenu(0);
$menu->addItem("sommaire ",
"Sommaire",
"index.php");
$menu->setItemLevel("sommaire",
0);
$menu->addItem("page_invisible",
"Acces Membres"
"membres.php");
$menu->setItemLevel("page_invisible",
1);
$menu->setCurrentLevel(0);
\end{lstlisting}
aura pour effet de cr<63>er un menu dont seul l'<27>l<EFBFBD>ment {\em "Sommaire"}
sera affich<63>, car le droit d'acc<63>s de l'utilisateur indiqu<71> est
insuffisant pour afficher l'entr<74>e {\em "Acces Membres"} du menu.
\subsection{Utiliser le menu}
\par Une fois que les <20>l<EFBFBD>ments ont <20>t<EFBFBD> ajout<75>s et les droits d'acc<63>s fix<69>s, le menu
est pr<70>t a <20>tre utilis<69> : il suffit d'appeller la m<>thode \verb+toHTML()+ qui g<>n<EFBFBD>re
et renvoie le code HTML correspondant au menu <20> l'endroit o<> la fonction est appel<65>e.
\lstset{language=PHP}
\begin{lstlisting}
$menu=new SecureMenu();
[...]
print $menu->toHTML();
\end{lstlisting}