Note :


Le module auth propose deux fonctions pour la gestion des droits.
Attention !
Les fonctions et les informations fournies dans cette partie de la documentation sont susceptibles de poser des problèmes de sécurité dans votre application si elles sont improprement utilisées.
En cas de doute posez vos questions sur la mailing list.


Les droits dans Templeet

Les droits dans Templeet sont gérés zones par zones. Une zone est un ensemble de pages pouvant être accédées en ayant des droits spécifiques à cette zone. Chaque zone appartient à un utilisateur. Elle porte un nom qui est défini dans l'interface d'administration:

Certaines fonctions Templeet nomment les zones comme ceci : {numero_uid_du_propriétaire de la zone}nom_de_la_zone

Exemple avec la fonction ~auth_setprivuser :

~auth_setprivuser(1065486181,
	~array(
		'{413980100}zone1' => 4,
		'{413980100}zone2' => 0,
		'{0}zoneA' => 9
	)
)

De nouvelles zones peuvent être ajoutées:

Les utilisateurs ont des droits allant de 0 (aucun droit) à 10 sur chacune des zones. Ces droits sont modifiables par l'interface : http://rootix.free.fr/auth/

Les administrateurs ont tous les droits.
Les utilisateurs peuvent avoir des droits d'édition sur des zones, c'est à dire qu'ils peuvent donner des droits sur ces zones à d'autres utilisateurs.
Ils peuvent également avoir des droits de délégation qui leur permettent de donner des droits d'édition à d'autres utilisateurs.

~getauth

Cette fonction permet de protéger des pages. Elle doit être mise au début des templates.
La fonction ~getauth() prend 4 paramètres qui sont le nom de la zone, le niveau de privilège requis, la page permettant l'authentification et la page indiquant des privilèges insuffisants.

Pour pouvoir visualiser une page protégée par cette fonction un utilisateur doit posséder un niveau de permission supérieur ou égal au niveau requis dans la zone indiquée.

Dans l'exemple suivant un utilisateur qui veut visualiser une page protégée par ce code doit posséder un droit d'au moins 5 sur la zone 'zoneA':

~getauth('zoneA',5,"my_account/authform.html","my_account/nopriv.html")

La zone ADMIN qui permet de reconnaître les personnes ayant des droits administrateurs ne possède que les deux valeurs 0 et 1. Pour ne rendre visualisable une page que pour les administrateurs il faut mettre ce code:

~getauth('ADMIN',1,"my_account/authform.html","my_account/nopriv.html")

La fonction ~getauth() permet également de demander une authentification sans que des droits particuliers soient exigés. Pour visualiser une page protégée par ce code il suffit d'être identifié.

~getauth('',0,"my_account/authform.html","my_account/nopriv.html")

Il est également possible de n'exiger aucun droit particulier tout en ayant la possibilité d'avoir des informations sur l'utilisateur si celui ci est identifié.

~getauth('',-1)

~getbyuid

Cette fonction renvoie un champ d'un utilisateur.

La fonction prend deux paramètres :

La valeur retour du champ "area" est un tableau. La clé de chaque ligne est le nom de la zone, et sa valeur est le niveau de droit de l'utilisateur dans cette zone. Le tableau contient uniquement les zones auxquelles l'utilisateur courant à un droit d'administration.

Exemple d'utilisation de la fonction ~getbyuid :

~getbyuid(803506639, "login")
~getbyuid(803506639, "nickname")
~getbyuid(803506639, "valid")
~getbyuid(803506639, "email")
~getbyuid(803506639, "ipaddr")
~getbyuid(803506639, "creation")
~array_list(~getbyuid(803506639, "area"), 0,,
"LF", '<p>L\'utilisateur a les niveaux de droits suivants :</p>
	<ul>'
"LM",
	'
	<li>dans la zone ~array_fld("key") : ~:array_fld("current")</li>
	'
"LL",'
	</ul>'
)

~getpriv

Cette fonction permet de connaître le niveau de droit de l'utilisateur pour la zone passée en paramètre. Il est donc possible d'ajouter des entrées dans un menu pour les personnes ayant les droits adéquats.

~if(~getpriv('EDITOR'),'<a href="edit.html">edit</a>')

~setauth

Cette fonction permet de vous connecter sous un compte utilisateur.

La fonction prend au minimum deux paramètres :

Code d'erreur renvoyé par la fonction :

NOTE : si le paramètre remember était activé lors de la dernière connexion, la variable lastauth_user contient le nom d'utilisateur utilisé lors de cette connexion.

Exemple d'utilisation de ~setauth :

Lors de la dernière connexion vous vous étiez identifié sous le compte ~get("lastauth_user")
~setauth("username", "password", 1)

~auth_signout

Cette fonction permet vous déconnecter d'un compte utilisateur.

Exemple :

~auth_signout()

Les variables auth_*

auth_user
Cette variable permet de connaître le nom de l'utilisateur identifié.
auth_uid :
Cette variable permet de connaître le numéro d'identifiant de l'utilisateur.
Si aucun utilisateur n'est identifié, alors la valeur de auth_uid est -1.
La valeur uid du compte administrateur est 0.
auth_email :
Cette variable permet de connaître l'adresse électronique de l'utilisateur identifié.
auth_nickname :
Cette variable permet de connaître le "nickname" de l'utilisateur identifié.
~getauth('',-1) <!-- l'appel de getauth est nécessaire pour initialiser la variable auth_user -->
.
.
.
~if(~get("auth_user")!="",
'Votre login est ~get("auth_user")<br />
Votre numero d\'identifiant est ~get("auth_uid")<br />
Votre adresse électronique est ~get("auth_email")<br />
Votre nickname est ~get("auth_nickname")
',
'Vous n\'êtes pas identifié')

 résultat =>

 
Vous n'êtes pas identifié