Ce widget regroupe plusieurs modules permettant de gérer les identités au sein d'une application. En utilisant ce widget, on peut s'authentifier, s'inscrire, valider les comptes par email, se faire rappeler son mot de passe, et éditer ses informations personnelles. Les comptes sont stockés dans un annuaire LDAP ou dans une base de données relationnelle. Pxxo_Widget_IdentityManager permet l'accès ou non aux sous widgets selon le paramètre menu_tab_to_show et selon l'état de connexion (Auth).
Les différents modules de ce widget sont les suivants :
Exemples :
![]() |
![]() |
Démo :
[ lien direct ]
A voir aussi :
| Nom | Valeur par défaut | Description |
|---|---|---|
| connection_driver | 'LDAP' | type d'accès aux données (“LDAP” ou “MDB2” ou “AIT”) |
| connection_options | array() | options pour l'accès aux données (Voir exemple ci-dessous) |
| username | chaine vide | initialise les formulaires avec un login |
| action_urls | calculé automatiquement | définit les urls pour afficher les sous widgets |
| menu_tab_to_show | array('auth','profil','register', 'entercode','sendcode', 'retrievepassword') | configure les onglets à afficher/cacher |
| default_tab | 'auth' | configure l'onglet a afficher par défaut |
| codeverif_path | calculé automatiquement | chemin pour stocker les fichiers temporaires pour la validation du compte par email |
| skip_codeverif | false | évite la validation du compte par email |
| display_signin_link | false | affiche un lien hypertexte “Connexion” permettant d'accéder au formulaire d'authentification |
| display_register_link | true | affiche un lien hypertexte “Inscription” permettant de basculer sur la page d'inscription d'un nouveau compte |
| show_lost_password | true | affiche un lien vers le widget Retrievepassword qui rappelle un mot de passe oublié |
| skip_cgu | true | ne demande pas l'acceptation des CGU avant l'inscription |
| cgu | <p>Avant de continuer, veuillez lire les conditions générales d'utilisation</p> | définit le texte des Conditions Générales d'Utilisation |
| ask_current_password | false | demande la saisie du mot de passe actuel pour pouvoir modifier le profil |
| mail_driver | 'mail' | 'back-end' de PEAR_Mail (mail, sendmail ou smtp). [ Doc officielle ] |
| mail_options | array() | paramètres spécifiques au back-end de PEAR_Mail [ Doc officielle ] |
| mail_sender | 'noreply@noreply.com' | adresse mail de l'expéditeur (champ d'entête 'From') [ Doc officielle ] |
| onregister_callback | null | Éventuelle callback utilisateur permettant d'exécuter du code lorsqu'une inscription est arrivée à son terme. Le premier paramètre est le tableau $user qui décrit l'utilisateur enregistré. Le second paramètre est une référence vers l'objet de connexion (LDAP, MDB2 ou AIT). |
| onsignin_callback | callback | L'éventuelle callback utilisateur appelée une fois que l'utilisateur est connecté. Le premier paramètre est le tableau descriptif de l'utilisateur, le second paramètre est une instance du widget Pxxo_Widget_Identity_Auth. |
| onsignout_callback | callback | L'éventuelle callback utilisateur appelée une fois que l'utilisateur est déconnecté. Le premier paramètre est le tableau descriptif de l'utilisateur, le second paramètre est une instance du widget Pxxo_Widget_Identity_Auth. |
| external_auth_callback | callback | L'éventuelle callback utilisateur qui sera entièrement chargée de gérer l'authentification de l'utilisateur. Cette callback est également appelée lorsque l'utilisateur se déconnecte. Le premier paramètre est le mode courant du widget ('signin' ou 'signout'). Le second paramètre est une instance du widget Pxxo_Widget_Identity_Auth. |
Le paramètre “connection_options” est un tableau associatif décrivant les options pour personnaliser l'accès à la base de données : les options communes à LDAP, MDB2, AIT , les options pour la connexion LDAP, les options pour la connexion MDB2 et les options pour la connexion AIT.
Les options suivantes sont communes au paramétrage LDAP et MDB2 :
| Nom | Valeur par défaut | Description |
|---|---|---|
| usernamecol | - | Attribut à utiliser dans la base de données pour le login |
| mailcol | - | Attribut à utiliser dans la base de données pour l'adresse email |
| realnamecol | - | Attribut à utiliser dans la base de données pour prénom et nom de l'utilisateur |
| passwordcol | - | Attribut à utiliser dans la base de données pour le mot de passe |
| passwordtype | 'clear' | (facultatif) Type d'encodage du mot de passe dans la base de données. Choix possibles : 'clear', 'md5' |
usernamecol et mailcol ont des valeurs identiques, le mail sera utilisé comme identifiant (login).
Si vous avez défini le paramètre connection_driver='LDAP', voici les options de personnalisation pour la connection :
| Nom | Valeur par défaut | Description |
|---|---|---|
| host | - | Le nom réseau (host ou ip) du serveur LDAP |
| port | - | Le port du serveur LDAP |
| basedn | - | Le dn de la racine de l'annuaire |
| binddn | - | Le login root de l'annuaire |
| bindpw | - | Le mdp root de l'annuaire |
| usersdn | valeur de basedn | Indique la branche où se trouvent les utilisateurs. (facultatif, si rien n'est indiqué les utilisateurs sont cherchés à la racine de l'annuaire) |
| registerdn | valeur de usersdn | Indique la branche où l'on souhaite enregistrer les utilisateurs. (facultatif, si rien n'est indiqué les utilisateurs sont enregistré à la racine de l'annuaire, plus précisément : au même endroit que ce qui est indiqué dans usersdn) |
| userdefaultvalue | - | Permet d'indiquer l'attribut obligatoire objectclass et éventuellement les autres attributs obligatoires des différents schémas (cf remarque ci-dessous) |
Exemple :
$params = array(); $params['connection_driver'] = 'LDAP'; $params['connection_options'] = array( 'usernamecol' => 'uid', // ou la meme valeur que mailcol si on veut le mail comme login 'mailcol' => 'mail', 'realnamecol' => 'cn', 'passwordcol' => 'userPassword', 'passwordtype' => 'md5', // ou 'clear' 'host' => 'ldap.exemple.com', 'port' => 389, 'basedn' => 'dc=exemple,dc=com', 'binddn' => 'cn=manager,dc=exemple,dc=com', 'bindpw' => 'secret', 'usersdn' => 'dc=inist,dc=fr', // les connexions se font sur la totalité de l'annuaire 'registerdn' => 'ou=people,dc=exemple,dc=com', 'userdefaultvalue' => array( 'objectclass' => array('top','inetOrgPerson'), ) );
userdefaultvalue contient les attributs et valeurs que l'on doit utiliser par défaut pour la création des comptes. Ce paramètre permet surtout de préciser la valeur de objectclass ainsi que tous les paramètres obligatoires au sens LDAP :
'userdefaultvalue' => array( 'objectclass' => array('top','inetOrgPerson'), )
Si vous avez défini le paramètre connection_driver='MDB2', voici les options de personnalisation pour la connection :
| Nom | Valeur par défaut | Description |
|---|---|---|
| dsn | - | (obligatoire) Description de la connexion à la base de données. Exemple : phptype(dbsyntax)://username:password@protocol+hostspec/database?option=value Pour plus de détails lisez la documentation MDB2 : Syntaxe Tableau, Syntaxe Chaine |
| db_options | - | (facultatif) Vous pouvez ajouter des options MDB2 comme par exemple le niveau de debuggage ou de portabilité : Liste des options |
Exemple :
// exemples de paramètrage pour MDB2 $params['connection_driver'] = 'MDB2'; $params['connection_options'] = array( // parametres generiques 'usernamecol' => 'username', 'mailcol' => 'mail', 'realnamecol' => 'realname', 'passwordcol' => 'password', 'passwordtype' => 'md5', // parametres specifiques MDB2 'dsn' => 'mysql://root@locahost/test', 'db_options' => array('debug' => 2), 'table' => 'pxxo_widgets_register', );
Si vous avez défini le paramètre connection_driver='AIT', le connecteur AIT (All-Is-Tag) sera utilisé. Voici les options de personnalisation pour la connexion :
| Nom | Valeur par défaut | Description |
|---|---|---|
| handle | - | (obligatoire) Pointeur vers object créé par AIT::connect |
| itemtype | 'users' | (facultatif) Vous pouvez choisir le nom du Type d'Item à utiliser |
Exemple :
$params['connection_driver'] = 'AIT'; $params['connection_options'] = array( 'usernamecol' => 'uid', 'mailcol' => 'mail', 'realnamecol' => 'realname', 'passwordcol' => 'password', 'handle' => AIT::connect('mysql:host=localhost;dbname=ait', 'root'), 'itemtype' => 'users', );
Ce paramètre permet de modifier toutes URL utilisés par le Widget et les sous widgets. On peut ainsi utiliser de la réecriture d'URL afin d'obtenir des URL “parlante”…
Exemple :
$params['action_urls'] = array( 'auth' => $this->Registry->url_base.'/se-connecter', 'profil' => $this->Registry->url_base.'/mon-profil', 'register' => $this->Registry->url_base.'/inscription', 'entercode' => $this->Registry->url_base.'/verifier-code-inscription', 'sendcode' => $this->Registry->url_base.'/rappeler-code-inscription', 'retrievepassword' => $this->Registry->url_base.'/mot-de-passe-perdu', );
| Mode | Description |
|---|---|
| index | bascule sur l'onglet définit dans 'default_tab' |
| initialize_driver | initialise le pilote pour accéder à la base de données (permet de créer la table si elle n'existe pas) et affiche un onglet indiquant le résultat de cette opération |
| auth | bascule sur l'onglet d'authentification |
| profil | bascule sur l'onglet d'édition du profil |
| register | bascule sur l'onglet d'inscription |
| entercode | bascule sur l'onglet qui demande d'entrer son code de verification |
| sendcode | bascule sur l'onglet qui va envoyer ou renvoyer le code de verification |
| retrievepassword | bascule sur l'onglet permettant de se faire rappeler son mot de passe |
<?php require_once 'Pxxo/Widget/IdentityManager.php'; $params['connection_driver'] = ... ; // cf. ci-dessus $params['connection_options'] = ... ; // cf. ci-dessus $params['menu_tab_to_show'] = array('auth', 'profil', 'register', 'entercode', 'sendcode', 'retrievepassword'); $params['default_tab'] = 'auth'; // par défaut on tombera sur l'onglet demandant l'authentification $params['show_form'] = true; $params['show_lost_password'] = false; $params['skip_cgu'] = false; $params['cgu'] = '...CGU...'; $params['ask_current_password'] = true; $params['skip_codeverif'] = true; $params['mail_driver'] = 'mail'; $params['mail_options'] = array(); $params['mail_sender'] = 'noreply@noreply.com'; $widg = new Pxxo_Widget_IdentityManager($params); $widg->addDecorator('Pxxo_Widget_Decorator_Core'); $widg->main(); $widg->dump(); ?>
Maintenant voici comment utiliser les callbacks utilisateurs :
<?php require_once 'Pxxo/Widget/IdentityManager.php'; function my_onregister($user, $connection) { // on s'amuse a convertir en majuscule le realname // ca n'a pas bcp d'interet mais bon c'est pour l'exemple... $user['realname'] = strtoupper($user['realname']); $connection->update($user); } $params['connection_driver'] = ... ; // cf. ci-dessus $params['connection_options'] = ... ; // cf. ci-dessus $params['onregister_callback'] = 'my_onregister'; $widg = new Pxxo_Widget_IdentityManager($params); $widg->addDecorator('Pxxo_Widget_Decorator_Core'); $widg->main(); $widg->dump(); ?>
©2003-2010 Pxxo
Partenaires : INIST-CNRS | Sourcesup | Web2.0 chat server | Micropolia | Jeux gratuits | Areno