templeet
pix
corner_top pix


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.

En cas de doute posez vos questions sur la mailing list.

Principes généraux

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 : privileges

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.

Les variables de l'authentification

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

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)
auth_signout

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

Exemple :

~auth_signout()
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>')
auth_getmethod

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
getprivateinfo

Cette fonction est obsolète. Elle remplacée par getprofile.

getprofile

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

auth_editpriv

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
setauth

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)

auth_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 ~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>'
)

auth_userspace

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.

corner_bottom pix
pix