Plugin/Eventos/Usuario
From Joomla! Documentation
< Plugin | Events
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.
onUserAuthorisation
Descripción
Este evento se activa cuando el usuario se autentica contra el usuario de la base en Joomla!.
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/user/authentication.php
Ejemplo
onUserAuthorisationFailure
Description
The system triggers this event when the user has been authenticated but he has not been authorised to login. You should only use this event in User plugins.
Parameters
- $user - an object JAuthenticationResponse
Return Value
void (it does not return any value or object)
Used in files
- libraries/cms/application/cms.php
onUserLogin
Description
This event is triggered after the user is authenticated against the Joomla! user-base.
Si necesitas abortar el proceso de inicio de sesión (autenticación), en su lugar tendrás que usar onUserAuthenticate.
Parameters
- $user - an associative array of JAuthenticationResponse type (see link for array keys)
- $options - an associative array containing these keys: ["remember"] => bool, ["return"] => string, ["entry_url"] => string
Return Value
Boolean
Used in files
- libraries/joomla/application/application.php
- plugins/user/joomla.php
Example
- 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
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 immediately
$app->close();
}