Plugin/Evénements/Utilisateur

From Joomla! Documentation

< Plugin‎ | Events
This page is a translated version of the page Plugin/Events/User and the translation is 100% complete.

Other languages:
English • ‎español • ‎français • ‎Nederlands

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

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();
}