Authentification
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. 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 :
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.
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é.
Cette fonction permet de protéger des pages. Elle doit être mise au début des templates.
La fonction ~getauth() prend quatre 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)
Cette fonction permet vous déconnecter d'un compte utilisateur.
Exemple :
~auth_signout()
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>')
Cette fonction renvoie la méthode courante utilisée pour l'authentification.
Les méthodes de base Templeet sont "file" (par fichier) et "db" (par base de données).
Exemple :
Méthode actuelle d'authentification: ~auth_getmethod()
retourne par exemple :
Méthode actuelle d'authentification: file
Cette fonction renvoie le tableau des données du profil d'un utilisateur.
Exemple :
Détail du compte : ~string("auth_user")
~array_list(getprofile(),1,,
"LM",
"
Clé : ~array_fld('key') - Valeur : ~array_fld('current')
"
)
retourne :
Clé : Nom - Valeur : Germain
Clé : Ville - Valeur : Toulouse
Cette fonction permet de savoir si l'utilisateur possède des privilèges d'édition de privilèges.
Exemple :
~if(auth_editpriv(),
"Vous avez des privilèges d'édition de privilèges",
"Vous n'avez pas de privilèges d'édition de privilèges",
)
retourne:
Vous n'avez pas de privilèges d'édition de privilèges
Cette fonction permet de vous connecter sous un compte utilisateur.
La fonction prend au minimum trois paramètres :
- userspace : l'environnement d'authentification i.e. l'uid d'un utilisateur à qui a été délégué un userspace
- 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
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 ~string(lastauth_user)
~setauth(0,"username", "password", 1)
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 ~auth_getbyuid :
~auth_getbyuid(803506639, "login")
~auth_getbyuid(803506639, "nickname")
~auth_getbyuid(803506639, "valid")
~auth_getbyuid(803506639, "email")
~auth_getbyuid(803506639, "ipaddr")
~auth_getbyuid(803506639, "creation")
~array_list(~auth_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>'
)
Cette fonction permet d'obtenir la liste des environnements d'authentification (userspace).
La fonction ne prend pas d'argument et retourne un tableau avec des clefs contenant les uids des environnements d'authentification et les valeurs associées le nom de environnements d'authentification.