Note :
- Les droits dans Templeet
- Les variables auth_uid, auth_user, auth_email, auth_nickname
- getauth : protéger une page
- getbyuid : renvoie la valeur d'un champ d'un utilisateur
- getpriv : renvoie le niveau de droit de l'utilisateur pour une zone
- setauth : se connecter à un compte
- auth_signout : se déconnecter d'un compte

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 :
- uid : numéro d'index de l'utilisateur
- field : nom du champ recherché qui peut avoir pour valeur :
- "login" : identifiant de connexion de l'utilisateur
- "nickname" : surnom de l'utilisateur
- "valid" : renvoie 1 si le compte utilisateur est valide, sinon renvoie -1
- "email" : adresse électronique de l'utilisateur
- "ipaddr" : adresse ip de l'utilisateur
- "creation" : date de création de l'utilisateur
- "area" : niveau de droit de l'utilisateur
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 :
- username : la connexion se fait sur ce compte utilisateur
- password : mot de passe de l'utilisateur
- remember : à 1 pour se souvenir du login lors de la prochaine connexion (paramètre optionnel)
Code d'erreur renvoyé par la fonction :
- -1 : compte utilisateur inconnu
- -2 : compte utilisateur non validé
- -10 : mot de passe invalide
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é