Gestion de l'authentification Interface utilisateur Fonctions de manipulation d'utilisateur Fonctions de manipulation des zones Fonctions de gestion de validation des comptes |
Le principe de fonctionnement de l'authentification Templeet est expliqué dans le module auth.
Avant toute utilisation de l'authentification de Templeet il est nécessaire de configurer Templeet.
Cette interface peut être utilisée par toute personne ayant des droits d'édition de privilèges, c'est à dire tous les administeurs ainsi que les personnes ayant un droit d'édition de zone ou un droit de délégation de zone.
La configuration de Templeet ne peut être effectuée que par un administrateur Templeet.
A l'installation de Templeet la méthode d'authentification par défaut est la méthode fichier (file). Un seul compte existe : ADMIN (le mot de passe est celui que vous indiquez à l'installation). Ce compte possède le privilège administrateur et permet de configurer Templeet.
La configuration de Templeet se fait dans l'interface d'administration avec la page accessible par cette icone:
Le choix de la méthode d'authentification se fait avec
Les méthodes actuellement disponibles sont:
- file: authentification par fichier
Cette méthode permet d'utiliser Templeet sans configurer de base de données. Son utilisation doit être réservée lorsque le nombre d'utilisateur authentifiés est faible. - db: authentification par base de données
Cette méthode peut gérer un grand nombre d'utilisateurs. Les bases de données supportées actuellement sont MySQL et PostgreSQL. Si vous souhaiter supporter d'autres base de données, faites vous connaitre sur la liste templeet-fr.
Le choix du mode de validation des comptes se fait avec
Pour être utilisable un compte doit être validé. Le mode de validation des comptes permet de choisir l'état d'un compte à sa création. Les états possibles sont:
- Non : les comptes doivent être validés par un administrateur.
- Oui : les comptes sont valides immédiatement.
- A Confirmer : les comptes doivent être validés par l'utilisateur avec un code qui lui est envoyé par mail. Ce mode ne fonctionne que si le serveur possède un système de mail correctement configuré.
- Double confirmation : les comptes créés doivent être validés par l'utilisateur sur réception d'un mail contenant le code d'activation. Les comptes doivent ensuite être validés par un administrateur
Cette fonction permet de créer un nouvel utilisateur.
Voici la liste des arguments qu'elle accèpte :
- userspace :
- -1 pour créer un adminspace
- 0 pour un utilisateur normal
- uid de l'adminspace pour créer un sous-utilisateur
- vide pour que cela prenne automatiquement l'uid de l'adminspace connecté
- user : nom du compte à créer
- password : mot de passe du compte à créer
- profile : tableau contenant les données personnelles du compte
- email : adresse mail du compte
- subject : sujet du mail à envoyer
- message : message du mail à envoyer
- header : entêtes personnalisées pour le mail
- confirm : 1 pour forcer la validation du compte dès sa création
- area, niveau : couple(s) de deux arguments dont le premier est le nom d'une zone, et le second le niveau de droit qui sera attribué au compte. Il est possible d'attribuer plusieurs droits sur les zones de deux manières :
- en les listant les unes après les autres : ...'ADM',5,AUTHOR,3,EDITOR,7)
- en utilisant un tableau ~array('ADM'=>5,'AUTHOR'=>3,'EDITOR'=>7)
Si la valeur de retour de la fonction est supérieur à 0, celle-ci correspond à l'identifiant unique de l'utilisateur qui vient d'être créé.
Code d'erreur renvoyé par la fonction :
- -3 : utilisateur déja existant
- -12 : erreur dans les paramètres
- -101 : utilisateur ou mot de passe mal formaté
- -102 : erreur lors de l'envoi du mail
- -107 : privilèges insuffisants
- -113 : email invalide (mal formé)
- -115 : zone inexistante, ou bien vous n'avez pas le droit de définir les droits sur cette zone
- -126 : Base des utilisateurs inconsistante, userspace non trouvé
- -200 : deuxième argument manquant dans la définition du droit d'accès d'une zone
Exemple d'utilisation de ~auth_newuser :
~rem(
user = 'newpseudo',
password = 'password',
profile =
array(
'Nom'=>'Doe',
'Prénom'=>'John'
),
email = 'email@templeet.org',
mailHeaders = array('From'=>'contact@templeet.org','Reply-To'=>'contact@templeet.org','X-Sender'=>'contact@templeet.org'),
zones =
array(
'ZONE1'=>5,
'ZONE2'=>3
),
newuser =
auth_newuser(
0,
user,
password,
profile,
email,
"Création d'un utilisateur",
'
Bonjour,
Vous avez demandé la création d'un compte sur ~getconf("site_url")
Pour valider cette demande vous devez charger cette page :
~getconf("site_url")~absolute_templeet()my_account/validaccount,~get("user"),~get("auth_validkey").html
',
mailHeaders,,
zones
)
)
~if(newuser >=0 ,
'Un nouveau compte ayant ~get("user") comme login a bien été créé',
'Un problème est survenu lors de la création de l\'utilisateur'
)
Cette fonction permet de supprimer un utilisateur.
La fonction prend un paramètre :
- uid : numéro uid du compte à supprimer
Code d'erreur renvoyé par la fonction :
- -4 : vous devez avoir un droit administrateur pour effectuer cette opération
- -105 : impossible d'utiliser cette fonction car l'utilisateur n'est pas authentifié
- -107 : privilèges insuffisants
Exemple d'utilisation de la fonction ~auth_deluser :
~auth_deluser(8041247)
~auth_listuser est une fonction de liste qui permet de lister les comptes utilisateurs de Templeet. Les informations relatives à ces utilisateurs sont renvoyées par la fonction ~auth_listuserfld.
La fonction prend quatre arguments plus les sélecteurs:
- l'environnement d'authentification (userspace)
- l'expression de filtrage des utilisateurs
- le numéro du premier utilisateur à lister
- le nombre d'utilisateurs à lister
- les sélecteurs
Les sélecteurs supportés par cette fonction sont LM, LF, LL, L1, LN et LD.
L'expression de filtrage des utilisateurs permet de ne lister que certains utilisateurs. Le caractère '?' remplace n'importe quel caractère du nom et '*' remplace plusieurs caractères.
- bob permet de trouver l'utilisateur "bob"
- bob* permet de trouver tous les utilisateurs qui commencent par "bob" (bob, bobby, bob10 ...)
- *bob* permet de trouver tous les utilisateurs qui contiennent "bob" (bob, bobby, superbob ...)
- bob? permet de trouver tous les utilisateurs qui commencent par "bob" ET qui ont un caractère supplémentaire quelconque (bob1, bobo mais pas bob ni bobby)
Code d'erreur renvoyé par la fonction :
- -8 : la valeur de regexp est invalide
- -12 : les arguments indice et nombre doivent être de type numérique
- -103 : impossible d'utiliser cette fonction car l'utilisateur n'est pas connecté
- -200 : erreur de paramètre
- -1000 : erreur de requête
~auth_listuserfld renvoie la valeur d'un champ de l'utilisateur listé par la fonction ~auth_listuser.
La fonction prend un seul argument. Celui-ci peut être :
- uid
- login
- ipaddr (adresse IP utilisée pour créer l'utilisateur)
- creation (date de creation)
- nickname (pseudo)
- valid (validité du compte)
- profile (tableau des informations de profil)
Cette fonction renvoie le nombre de comptes utilisateur selectionnés par la fonction auth_listuser.
Exemple d'utilisation des commandes ~auth_listuser, ~auth_listuserfld et ~auth_nbrows :
~auth_listuser("", 0,,
"LF", <![LF[<p>Nombre d'utilisateur : ~auth_nbrows()</p><table>]LF]>,
"LL",<![LL[</table>]LL]>,
"LM", <![LM[
<tr>
<td>~auth_listuserfld("uid")</td>
<td>~auth_listuserfld("login")</td>
<td>~auth_listuserfld("email")</td>
<td>~auth_listuserfld("ipaddr")</td>
<td>~auth_listuserfld("creation")</td>
<td>~auth_listuserfld("nickname")</td>
<td>~auth_listuserfld("valid")</td>
<td><pre>~print_r(~auth_listuserfld("privateinfo"))</pre></td>
</tr>]LM]>)
Attention : cette fonction doit être à l'intérieur de la commande ~auth_listuser.
~authlist est une fonction de liste qui permet de lister les propriétés d'un compte. Les informations relatives à ces propriétés sont renvoyées par la fonction ~auth_listfld.
La fonction prend deux arguments plus les sélecteurs:
- uid du propriétaire des zones à lister (0 pour ADMIN)
- uid de l'utilisateur dont il faut lister les utilisateur à traiter
- les sélecteurs
Les sélecteurs supportés par cette fonction sont LM, LF, LL, L1 et LD.
Code d'erreur renvoyé par la fonction :
- -103 : impossible d'utiliser cette fonction car l'utilisateur n'est pas connecté
- -200 : erreur de paramètre
~auth_listfld renvoie la valeur de la propriété d'un compte listé par la fonction ~authlist.
La fonction prend un argument obligatoire et un optionnel. Le premier argument peut être :
- user : nom du compte
- valid : état de validité du compte :
- -2 : Non, Email OK
- -1 : Non
- 0 : à confirmer
- 1 : Oui (confirmé)
- email : adresse mail du compte
- ipaddr : adresse ip du compte
- creation : date de création du compte (format : AAAAMMJJhhmm)
- uid : numéro d'identifiant du compte
- area : nom de la zone
- name : valeur du label de la zone
- val : niveau de droit de l'utilisateur dans la zone
Exemple d'utilisation des commandes ~authlist et ~authfld :
~authlist(~get('uid_zone'),~get('uid')
"LF",<![LF[
user : ~authfld("user"),<br />c
email :~authfld("email"),<br />
valid : ~authfld("valid"),<br />
ipaddr :~authfld("ipaddr"),<br />
creation : ~authfld("creation"),<br />
uid : ~authfld("uid")'<br />
]LF]>,
"LM",<![LM[
Nom de la zone : ~authfld("area"),<br />
Label de la zone : ~authfld("name"),<br />
Niveau de droit de l\'utilisateur sur cette zone : ~authfld("val"),<br />
]LM]>)
Pour certains des champs il est possible de positionner un deuxième paramètre qui permet d'indiquer la forme sous laquelle le champs doit être retourné.
Si le premier est argument est:
- valid: le deuxième argument peut être:
-
- 1: l'état du compte sera affiché sous forme de zone de saisie HTML.
Les labels peuvent être passés de la même manière que précédement. - 2: l'état du compte sera affiché sous forme de chaîne:
- No, Email OK : Compte non validé dont l'email est validé
- No : Compte non valide
- Conf : En attente de confirmation de l'email par l'utilisateur
- Yes : Compte valide
Les labels peuvent également être passés en paramètres:
- 1: l'état du compte sera affiché sous forme de zone de saisie HTML.
~authfld("valid",1)
~authfld("valid",2)
~authfld("valid",1,"Compte non validé dont l'email est validé",
"Compte non valide",
"En attente de confirmation de l'email par l'utilisateur",
"Compte valide")
~authfld("valid",2,"Compte non validé dont l'email est validé",
"Compte non valide",
"En attente de confirmation de l'email par l'utilisateur",
"Compte valide")
- email: le deuxième argument peut être:
- 1: l'email sera affiché sous forme de zone de saisie HTML.
- val: le deuxième argument peut être:
- 1: le niveau de droit sera affiché sous forme de zone de saisie HTML.
Cette fonction permet de modifier le mot de passe d'un utilisateur.
La fonction prend trois arguments :
- uid : numéro uid de l'utilisateur à modifier (seul les comptes administrateur peuvent modifier le mot de passe d'un autre utilisateur)
- oldpassword : ancien mot de passe
- newpassword : nouveau mot de passe
Code d'erreur renvoyé par la fonction :
- -1 : utilisateur inexistant
- -5 : ancien mot de passe invalide
- -105 : impossible d'utiliser cette fonction car l'utilisateur n'est pas authentifié
- -106 : le nouveau password ne peut pas être une chaîne vide
- -107 : vous ne pouvez pas modifier le mot de passe de cette utilisateur
Exemple:
~auth_passw(1065486181, "ancienmotdepasse", "nouveaumotdepasse")
Cette fonction permet de modifier l'identifiant de connexion (login) et le pseudo (nickname) d'un utilisateur.
La fonction prend trois arguments :
- uid : numéro uid de l'utilisateur à modifier
- login : nouvel identifiant de connexion
- nickname : nouveau pseudo
Code d'erreur renvoyé par la fonction :
- -1 : utilisateur inexistant
- -107 : vous n'avez pas le droit d'utiliser cette fonction
- -118 : login ou nickname mal formaté
Exemple d'utilisation de la fonction ~auth_loginnick :
~auth_loginnick(1065486181, "nouveaupseudo", "nouveaunickname")
Cette fonction permet d'effectuer une demande de modification de l'adresse électronique d'un utilisateur.
La fonction prend trois paramètres :
- email : nouvelle adresse électronique
- subject : sujet du message électronique envoyé
- message : message du message électronique envoyé
Dans le corps du message vous avez accès aux variables suivantes :
- auth_email : qui contient la nouvelle adresse électronique
- auth_validkey : qui contient un code d'activation utilisé par la fonction ~auth_setnewmail
Code d'erreur renvoyé par la fonction :
- -102 : erreur lors de l'envoi du message électronique
- -103 : impossible d'utiliser cette fonction car l'utilisateur n'est pas connecté
Exemple d'utilisation de la fonction ~auth_newmail :
~auth_newmail("newmail@domain.org",
'Changement de votre adresse email',
'Bonjour,
Vous avez demandé le changement de votre adresse email.
Pour valider cette demande vous devez charger cette page :
~getconf('site_url')~absolute_templeet()my_account/setnewemail,~get("auth_uid"),~get("auth_email"),~get("auth_validkey").html
--
Ce site est géré par Templeet
')
Cette fonction permet de valider la demande de modification de l'adresse électronique d'un utilisateur.
La fonction prend trois paramètres :
- uid : numéro uid de l'utilisateur à modifier
- email : nouvelle adresse électronique
- key : code d'activation
Code d'erreur renvoyé par la fonction :
- -6 : le code d'activation est invalide
- -103 : : impossible d'utiliser cette fonction car l'utilisateur n'est pas connecté
L'exemple suivant utilise les paramètres transmis à la page my_account/setnewemail.html de l'exemple de la fonction ~auth_newmail:
~auth_setnewmail(
~get_filenamevar(1), --> ce paramètre contient la valeur de ~get("auth_uid")
~get_filenamevar(2), --> ce paramètre contient la valeur de ~get("auth_email")
~get_filenamevar(3) --> ce paramètre contient la valeur de ~get("auth_validkey")
)
Cette fonction met à jour les données de profil d'un utilisateur.
La fonction prend deux paramètres :
- uid : numéro uid de l'utilisateur à modifier
- profil: tableau de données privées
Exemple d'utilisation de la fonction ~auth_updateprofile :
profile["nom"]='Germain';
profile["ville"]='Toulouse';
auth_updateprofile(auth_uid,profile);
Cette fonction est obsolète. Elle a été remplacée par auth_updateprofile.
Cette fonction permet définir le niveau de privilège d'un utilisateur sur une ou plusieurs zones.
Elle prend deux paramètres :
- uid : numéro d'index de l'utilisateur à modifier
- privarea : tableau contenant les nouveaux privilèges (voir ci-dessous la structure de ce tableau)
Chaque clé du tableau privarea correspond à une zone, et la valeur de cette clé correspond au niveau de privilège. Une zone est identifiée comme ceci : "{numéro_uid_du_propriétaire_de_la_zone}nom_de_la_zone".
NOTE : la valeur uid du compte ADMIN est 0
Code d'erreur renvoyé par la fonction :
- -103 : utilisateur non identifié (un comtpe doit être ouvert pour effectuer des changements de privilège)
Exemple:
~auth_setprivuser(1065486181,
~array(
'{413980100}zone1' => 4,
'{413980100}zone2' => 0,
'{0}zoneA' => 9
)
)
Cette fonction permet de modifier toutes les informations liées à un utilisateur (hors profil).
Cette fonction est très complexe et très peu utilisée. Si quelqu'un veut écrire la doc, ce sera avec plaisir.
Cette fonction renvoit TRUE ou FALSE selon que Templeet a été configuré ou non pour utiliser l'adresse email de l'utilisateur comme login.
Cette fonction permet d'obtenir sous forme de tableau la liste des champs définis dans le profil.
Elle ne prend pas de paramètres.
Cette fonction permet de créer une nouvelle zone.
La fonction prend trois paramètres :
- userspace : uid de l'environnement d'authentification.
- areaname : nom de la zone.
- arealabel : nom littéral de la zone.
Code d'erreur renvoyé par la fonction :
- -108 : paramètre areaname mal formaté
- -109 : paramètre arealabel mal formaté
- -110 : une zone porte déjà le même nom (areaname)
- -117 : vous ne pouvez pas créer une nouvelle zone car le nombre maximal de zones a été atteint
Exemple:
~auth_newarea(4577458, "zone_truc", "Ceci est la zone truc")
Cette fonction permet de supprimer une zone.
La fonction prend deux paramètres :
- userspace : uid de l'environnement d'authentification.
- areaname : nom de la zone à supprimer
Code d'erreur renvoyé par la fonction :
- -108 : paramètre areaname mal formaté
- -111 : impossible de supprimer la zone "admin" du compte 0 (administrateur)
Exemple:
~auth_delarea(4577458, "zone_truc")
Cette fonction permet de modifier le champ label d'une zone.
La fonction prend trois paramètres :
- userspace : uid de l'environnement d'authentification.
- areaname : nom de la zone à modifier.
- arealabel : nouvelle valeur du label (nom littéral) de la zone.
Code d'erreur renvoyé par la fonction :
- -108 : paramètre areaname mal formaté
- -109 : paramètre arealabel mal formaté
Exemple:
~auth_setarea(4577458, "zone_truc", "Nouveau nom")
~auth_list est une fonction de liste qui permet de lister les zones existantes. Les informations relatives à ces zones sont renvoyées par la fonction ~auth_listareafld.
La fonction prend trois arguments au minimum :
- userspace : uid de l'environnement d'authentification.
- les sélecteurs
Les sélecteurs supportés par cette fonction sont : LF, LM, LL, L1 et LD.
Code d'erreur renvoyé par la fonction :
- -103 : aucun utilisateur identifié
- -200 : erreur de paramètre
~auth_listareafld renvoie la valeur d'un champ de la zone listé par la fonction ~auth_listarea.
La fonction prend un seul argument. Celui-ci peut être :
- name : nom de la zone
- label : label de la zone
Exemple d'utilisation des commandes ~auth_listarea et ~auth_listareafld :
~auth_listarea(0,
"LD", "pas de zone",
"LM", '~auth_listareafld("name"), ~auth_listareafld("label")\n')
Cette fonction renvoie le mode de validation courant.
- valeur "YES" qui correspond au mode "Oui" : les comptes sont valides immédiatement.
- valeur "NO" qui correspond au mode "Non" : les comptes doivent être validés par un administrateur.
- valeur "CONFIRM" qui correspond au mode "A Confirmer" : les comptes doivent être validés par l'utilisateur avec un code qui lui est envoyé par mail. Ce mode ne fonctionne que si le serveur possède un système de mail correctement configuré.
- valeur "CONFADMIN" qui correspond au mode "Double confirmation" : les comptes créés doivent être validés par l'utilisateur sur réception d'un mail contenant le code d'activation. Les comptes doivent ensuite être validés par un administrateur.
Exemple:
Mode de validation des comptes Templeet actuel : ~auth_validmode()
~auth_validaccount permet soit de mettre un nouveau mot de passe quand celui-ci a été perdu soit de valider un compte précédemment créé .
Dans le premier cas la fonction prend trois arguments:
- user : nom du compte à valider
- key : clef
- password : mot de passe du compte à valider
Dans le second cas la fonction prend six arguments:
- user : nom du compte à valider
- key : clef
- une chaîne vide
- subject : sujet du mail à envoyer à l'administrateur du site
- message : message du mail à envoyer à l'administrateur du site
- un tableau d'entêtes supplémentaires à envoyer (optionnel)
en mode de validation CONFADMIN, un mail est envoyé à l'administateur du site pour l'informer qu'un compte a été créé afin qu'il le valide.
Code d'erreur renvoyé par la fonction:
- -1 : utilisateur non inexistant.
- -6 : clé non valide.
- -102 : problème lors de l'envoi du mail
Cette fonction permet de modifier le mode de validation courant des comptes.
Cette fonction prend un seul paramètre :
- valid : mode de validation à paramétrer, celui-ci peut être :
- "YES"
- "NO"
- "CONFIRM"
- "CONFADMIN"
voir la correspondance dans la documentation de la fonction ~auth_validmode
Code d'erreur renvoyé par la fonction :
- -104 : le paramètre mode est invalide
- -116 : impossible de sélectionner le mode CONFADMIN car l'adresse électronique de l'administrateur est indéfini
Cette fonction permet d'envoyer à un utilisateur qui a perdu son mot de passe un message avec une clef à usage unique pour saisir un nouveau mot de passe.
Elle prend cinq paramètres:
- userspace: l'environnement d'authentification
- login
- sujet de message
- corps du message
- entêtes supplémentaires (optionnel)
Le sujet ou le corps du message doivent inclure la variable auth_validkey. Cette clef est à passer à ~auth_validaccount() avec le nouveau mot de passe.