Plugin/Evénements/Utilisateur
From Joomla! Documentation
< Plugin | Events
Dans une installation standard de Joomla, plusieurs évènements utilisateur sont prédéfinis, qui, lorsqu'ils sont déclenchés, appellent des fonctions dans les plugins associés.
onUserAuthorisation
Description
Cet événement autorise un utilisateur particulier à se connecter. Cet événement est déclenché après que l'utilisateur se soit authentifié et avant qu'il ne soit connecté au site. Il peut être déclenché par les types de plugins Utilisateur et Authentification.
Paramètres
- $user - un objet de type JAuthenticateResponse
- $options - un tableau associatif contenant ces clés : ["remember"] => bool, ["return"] => string, ["entry_url"] => string, ["action"] => string
Valeur retournée
JAuthenticationResponse ou NULL (NULL si vous souhaitez rater l'authentification)
Utilisé dans les fichiers
- libraries/joomla/user/authentication.php
Exemple
onUserAuthorisationFailure
Description
Le système déclenche cet événement lorsqu'un utilisateur a été authentifié mais n'a pas été autorisé à se connecter. Vous devez uniquement utiliser cet événement dans les plugins de type Utilisateur.
Paramètres
- $user - un objet JAuthenticationResponse
Valeur retournée
void (ne retourne aucun objet ou valeur)
Utilisé dans les fichiers
- libraries/cms/application/cms.php
onUserLogin
Description
Cet événement est déclenché après que l'utilisateur se soit authentifié dans la base des utilisateurs Joomla.
Si vous souhaitez annuler le processus de connexion (authentification), vous devez alors utiliser onUserAuthenticate.
Paramètres
- $user - un array associatif de type JAuthenticationResponse (voir le lien pour les clés array)
- $options - un array associatif contenant ces clés : ["remember"] => bool, ["return"] => string, ["entry_url"] => string
Valeur retournée
Booléenne.
Utilisé dans les fichiers
- libraries/joomla/application/application.php
- plugins/user/joomla.php
Exemple
- plugins/user/example.php
onUserLogout
Description
Cet évènement est déclenché avant que l'utilisateur ne soit déconnecté du système.
Si le plugin renvoie la valeur false, la déconnexion globale échoue et l’événement onUserLogoutFailure est déclenchée : en cas de succès, l’événement onUserAfterLogout est alors déclenché.
REMARQUE : depuis la version 3.3.6, le renvoi de la valeur false ne fonctionne pas correctement, car les composants de stockage effectuent leur opération de déconnexion pendant l’événement onUserLogout. Donc, même si votre plugin retourne la valeur false, celles stockées ont déjà disparues. Ainsi, l'utilisateur sera "la plupart du temps" déconnecté même si vous retournez la valeur false. Il n'y a actuellement pas de façon d'empêcher proprement la déconnexion.
Paramètres
- $credentials - un array associatif contenant ces clés : ["username"] => string, ["id"] => int
- $options - un array associatif contenant cette clé : ["clientid"] => int
Valeur retournée
Booléenne.
Utilisé dans les fichiers
- libraries/cms/application/cms.php
- plugins/user/joomla/joomla.php
- plugins/system/logout.php
- plugins/system/remember/remember.php
Exemple
- plugins/user/example.php
onUserLoginFailure
Description
Cet évènement est déclenché dès qu'une demande d'authentification d'un utilisateur a échoué par n'importe quel plugin.
Paramètres
Deux paramètres. L'array d'informations d'identification pour l'utilisateur (voir onAuthenticate), et la JAuthenticationResponse à l'origine de l'échec.
Valeur retournée
Inconnue. La valeur retournée semble être ignorée dans tous les cas.
Utilisé dans les fichiers
- libraries/joomla/application/user/authentication.php
onUserAfterLogin
Description
Cet évènement est déclenché dès qu'un utilisateur se connecte avec succès.
Paramètres
Les options sont un array avec :
- remember
- return
- entry_url
- action
- user - JUser Object
- responseType
Valeur retournée
Booléenne.
Utilisé dans les fichiers
- libraries/legacy/application/application.php
- libraries/cms/application/cms.php
- plugins/authentication/cookie/cookie.php
onUserBeforeSave
Description
Cet évènement est déclenché avant la mise à jour d'un profil utilisateur.
Les anciens et nouveaux paramètres utilisateurs sont fournis : les éléments couramment utilisés sont : username, name, email, password, password_clear.
Le array des entrées de mot de passe prsente la valeur de mot de passe cryptée. Si l'utilisateur a juste changé le mot de passe, vous pouvez récupérer le mot de passe en texte plein à partir de $newUser['password_clear']. (Il sera paramétré sur "" si le mot de passe n'a pas été modifié.)
Paramètres
- $oldUser - Un tableau array associatif des colonnes dans la table utilisateur (valeurs actuelles).
- $isnew - Booléen pour identifier s'il s'agit d'un nouvel utilisateur (true - insert) ou un utilisateur existant (false - update)
- $newUser - Un tableau array associatif des colonnes dans la table utilisateur (nouvelles valeurs).
Valeur retournée
Booléenne. Si l'enregistrement utilisateur doit se poursuivre ou non. Tout plugin retournant une valeur false interrompt l'enregistrement.
Utilisé dans les fichiers
- libraries/joomla/user/user.php
Exemple
- plugins/user/example.php
onUserAfterSave
Description
Cet événement est déclenché après la mise à jour d'un profil utilisateur, ou lorsqu'un nouvel utilisateur a été stocké dans la base de données.
Le mot de passe dans le tableau array $user est déjà crypté à ce stade. Vous pouvez récupérer le mot de passe en texte plein à l'aide de $_POST['password'].
Paramètres
- $user - Un tableau associatif array des colonnes de la table utilisateur.
- $isnew - Valeur booléen pour identifier s'il s'agit un nouvel utilisateur (true - insert) ou un utilisateur existant (false - update)
- $success - Valeur booléenne indiquant si le stockage s'est réalisé avec succès.
- $msg - Message d'erreur si le stockage a échoué.
Remarque : les anciennes valeurs anciennes qui ont été mises à jour ne sont pas disponibles à ce stade ou par la suite. Dans le cas où vous avez besoin de ces anciennes valeurs, utilisez onBeforeStoreUser().
Valeur retournée
Aucune.
Utilisé dans les fichiers
- libraries/joomla/user/user.php
Exemple
- plugins/user/example.php
onUserBeforeDelete
Description
L'évènement est déclenché lorsqu'un utilisateur est sur le point d'être supprimé du système.
Paramètres
- $user - Un tableau array associatif des colonnes de la table user.
Valeur retournée
Aucune. Si vous voulez éviter que l'utilisateur ne soit supprimé, vous pouvez annuler la suppression en redirigeant vers le gestionnaire des utilisateurs. Par exemple :
if ($this->deleteNotAllowed($data))
{
$url = JRoute::_('index.php?option=com_users&view=users', false);
$msg = JText::sprintf('PLG_USER_DELETE_NOT_ALLOWED', $data['username']);
$app = Factory::getApplication();
$app->enqueueMessage($msg, 'error');
$app->redirect($url);
}
Utilisé dans les fichiers
- libraries/joomla/user/user.php
- plugins/user/joomla.php
Exemple
- plugins/user/example.php
onUserAfterDelete
Description
L'évènement est déclenché après qu'un utilisateur ait été supprimé du système.
Paramètres
- $user - Un tableau array associatif des colonnes de la table user.
- $succes - Valeur booléenne pour indiquer si la suppression a réussi.
- $msg - Message d'erreur si la suppression a échoué.
(JError objet détaillant l'erreur, le cas échéant).
Valeur retournée
Aucune.
Utilisé dans les fichiers
- libraries/joomla/user/user.php
- plugins/user/joomla.php
Exemple
- plugins/user/example.php
Orde d'exécution
Pour modifier le processus de connexion Joomla! en fonction de vos besoins (i. e. créer une sortie AJAX pour se connecter), il peut être important de connaître l'ordre des événements à générer.
Mauvaises accréditations | ACCRÉDITATIONS CORRECTES et l'utilisateur n'est pas bloqué (il est activé) | ACCRÉDITATIONS CORRECTES et l'utilisateur est bloqué (il n'est pas activé) |
---|---|---|
onUserAuthenticate retourne TRUE ou FALSE | | \ / onUserLoginFailure |
onUserAuthenticate retourne TRUE ou FALSE | | \ / onUserLogin retourne FALSE -> FIN retourne TRUE | | \ / onUserAfterLogin |
onUserAuthenticate returns TRUE ou FALSE | | \ / onUserLogin retourne TRUE ou FALSE | | \ / END |
Idée de l'exemple Supposons que vous vouliez réaliser une connexion en AJAX. Vous avez déjà réécrit le formulaire de module mod_login si bien qu'il est posté à Joomla! au moyen d'un appel AJAX. Vous avez ajouté un champ appelé ajax au formulaire. Alors, lorsque le formulaire est posté et que l'authentification a échoué, votre plugin personnalisé doit retourner des données JSON.
public function onUserLoginFailure($response)
{
$input = JFactory::getApplication()->input;
// If a non-ajax form was posted, we do not modify the behavior
if (!$input->post->get('ajax', false))
{
return;
}
$app = JFactory::getApplication();
$task_failed = false;
// Fill this array with the data you want to return, e.g. $response['status'] may be useful
// Check libraries/joomla/user/authentication.php for available status codes
$data = array('status' => $response['status']);
// At least here in the plugin it's a must to send proper headers
JFactory::getApplication()->setHeader('Content-Type', 'application/json', true)->sendHeaders();
echo new JResponseJson($data, $response['error_message'], $task_failed);
// Closing app is a must here to return JSON immediately
$app->close();
}