Plugin/Eventos/Usuario

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

En una instalación estándar de Joomla! tenemos varios eventos de Usuario predefinidos que, cuando se activan, llama a las funciones en los complementos asociados.

onUserLogin

Descripción

Este evento se activa cuando el usuario se autentica contra el usuario de la base en Joomla!.

Si necesitas abortar el proceso de inicio de sesión (autenticación), en su lugar tendrás que usar onUserAuthenticate.

Parámetros

  • $user - un array asociativo de tipo JAuthenticateResponse (consulta el enlace por las claves del array)
  • $options - un array asociativo que contiene estas claves: ["remember"] => booleano, ["return"] => cadena, ["entry_url"] => cadena

Valor Devuelto

Booleano

Utilizado en archivos

  • libraries/joomla/application/application.php
  • plugins/user/joomla.php

Ejemplo

  • plugins/user/example.php

onUserLogout

Descripción

Este evento se desencadena antes que el usuario cierre su sesión en el sistema.

Si algún plugin devuelve false, el cierre de sesión global falla y el evento onUserLogoutFailure es disparado; si tiene éxito, el evento onUserAfterLogout se desencadena.

NOTA: a partir de la versión 3.3.6, devolver false' no funciona correctamente, porque las acciones de los componentes realizan la operación de cierre de sesión durante el evento onUserLogout. Así que incluso si el plugin devuelve false', la acción se va a ejecutar de todos modos. Por lo tanto, el usuario "mayoritariamente" cerrará la sesión, incluso si se devuelve false. No hay forma real de abortar limpiamente el cierre de la sesión.

Parámetros

  • $credentials - un array asociativo que contiene estas claves: ["username"] => cadena, ["id"] => entero
  • $options - un array asociativo que contiene esta clave: ["clientid"] => entero

Valor Devuelto

Booleano

Utilizado en archivos

  • libraries/cms/application/cms.php
  • plugins/user/joomla/joomla.php
  • plugins/system/logout.php
  • plugins/system/remember/remember.php

Ejemplo

  • plugins/user/example.php

onUserAuthenticate

Descripción

Este evento se desencadena para comprobar que un conjunto de credenciales de inicio de sesión es válida.

Parámetros

Array de credenciales. Estructura:\\ ['username']\\ ['password']\\ Mecanismos de autenticación alternativos pueden suministrar credenciales adicionales.

Valor Devuelto

Un array de objetos JAuthenticateResponse que detalla los resultados de cada plugin, incluyendo el éxito o el fracaso.

Utilizado en archivos

  • libraries/joomla/user/authentication.php
  • plugins/authentication/gmail.php
  • plugins/authentication/joomla.php
  • plugins/authentication/ldap.php

Ejemplo

  • plugins/authentication/example.php

onUserLoginFailure

Descripción

Este evento se desencadena cuando una solicitud de autenticación de un usuario a fallado en algún plugin.

Parámetros

Dos parámetros. Las credenciales de la matriz para el usuario (ver onAuthenticate'), y el JAuthenticateResponse que causó el error.

Valor Devuelto

Desconocido. El valor de retorno parece ser ignorado en cualquier caso.

Utilizado en archivo

  • libraries/joomla/application/user/authentication.php

onUserAfterLogin

Descripción

Este evento se activa cada vez que un usuario se haya conectado correctamente.

Parámetros

Opciones en un array con:

  • remember
  • return
  • entry_url
  • action
  • user - JUser Object
  • responseType

Valor Devuelto

Booleano

Utilizado en archivos

  • libraries/legacy/application/application.php
  • libraries/cms/application/cms.php
  • plugins/authentication/cookie/cookie.php

onUserBeforeSave

Descripción

Este evento se desencadena antes de la actualización de un registro de usuario.

Los viejos y los nuevos parámetros de usuario; miembros comúnmente utilizado son: username, name, email, password, password_clear.

El array password de entrada es el hash del valor de la contraseña. Si el usuario ha cambiado la contraseña, puedes recuperar la contraseña en texto sin formato desde $newUser['password_clear']. (Se pueden colocar las "" si la contraseña no se ha cambiado.)

Parámetros

  • $oldUser - Un array asociativo de las columnas en la tabla user (valores actuales).
  • $isnew - Booleano para identificar si se trata de un nuevo usuario (verdadero - insert) o uno ya existente (falso - actualización)
  • $newUser - Un array asociativo de las columnas en la tabla user (nuevos valores).

Valor Devuelto

Booleano. Si el guardar usuario debe proceder o no. Cualquier plugin que devuelva falso aborta la operación de guardar.

Utilizado en archivo

  • libraries/joomla/user/user.php

Ejemplo

  • plugins/user/example.php

onUserAfterSave

Descripción

Este evento se desencadena después de la actualización de un registro de usuario o cuando un nuevo usuario se ha guardado en la base de datos.

La contraseña en el array $user ya está en hash en este punto. Puedes recuperar la contraseña en texto sin formato mediante $_POST['password'].

Parámetros

  • $user - Un array asociativo de las columnas en la tabla user.
  • $isnew - Booleano para identificar si se trata de un nuevo usuario (verdadero - insert) o uno ya existente (falso - actualización)
  • $success - Booleano para identificar si se guardo con éxito
  • $msg - Mensaje de error cuando no se guardo con éxito.

Nota: Los valores antiguos que se acaba de actualizar no están disponibles aquí o después. En caso de que necesites los valores antiguos, utiliza onBeforeStoreUser().

Valor Devuelto

Ninguno

Utilizado en archivo

  • libraries/joomla/user/user.php

Ejemplo

  • plugins/user/example.php

onUserBeforeDelete

Descripción

El evento se activa cuando un usuario está a punto de ser eliminado del sistema.

Parameters

  • $user - Un array asociativ de las columnas en la tabla user.

Valor Devuelto

Ninguno

Utilizado en archivos

  • libraries/joomla/user/user.php
  • plugins/user/joomla.php

Ejemplo

  • plugins/user/example.php

onUserAfterDelete

Descripción

El evento se activa después de que un usuario ha sido eliminado del sistema.

Parameters

  • $user - Un array asociativo de las columnas en la tabla user.
  • $succes - Booleano para identificar si la eliminación fue un éxito
  • $msg - Mensaje de Error si hubo error en la eliminación (JError objeto que detalla el error, si lo hay)

Valor Devuelto

Ninguno

Utilizado en archivos

  • libraries/joomla/user/user.php
  • plugins/user/joomla.php

Ejemplo

  • plugins/user/example.php

Orden de ejecución

Para modificar el proceso de inicio de sesión en Joomla! según tus necesidades (por ejemplo, la creación de una salida AJAX para el inicio de sesión), puede ser útil conocer el orden de los eventos al ser lanzados.

Credenciales erróneas CREDENCIALES CORRECTAS y el usuario no es bloqueado (se activa) CREDENCIALES CORRECTAS y el usuario es bloqueado (no se activa)
onUserAuthenticate
devuelve
VERDADERO o FALSO
         |
         |
        \ /
onUserLoginFailure
onUserAuthenticate
devuelve
VERDADERO o FALSO
         |
         |
        \ /
onUserLogin     devuelve FALSO -> FINAL
devuelve VERDADERO
         |
         |
        \ /
onUserAfterLogin
onUserAuthenticate
devuelve
VERDADERO o FALSO
         |
         |
        \ /
onUserLogin
devuelve
VERDADERO o FALSO
         |
         |
        \ /
        END

Idea de Ejemplo Supongamos que deseas usar un formulario previo de Ajax para iniciar sesión. Ya has sobrescrito un formulario mod_login por lo que es enviado a Joomla! a través de una llamada AJAX. Agregaste un campo llamado ajax, al formulario. Así que cuando el formulario es enviado y la autenticación falla, tu plugin personalizado debe devolver algunos datos 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 immideately
	$app->close();
}