Hola a todos! Qué tal?
He revisado acerca de manuales para crear plugins en joomla pero no hay mucha documentación acerca de crear plugins de autenticación, ya que para el proyecto en el cual estoy trabajado necesito modificar la forma de auntenticar a los usuarios.
Tomé de ejemplo el plugin de autenticación de gmail que viene instalado por defecto y creé un paquete nuevo a partir de ese, le hice las modificaciones necesarias para que funcione como lo deseo y lo instalé sin problemas.
No le cambié nombres de métodos a la clase que se usa, sólo cambié los nombres de los archivos, que si es necesario.
Creo que el problema está al llamar al método onAuthenticate, que se usa al momento en que el usuario envía el formulario con los datos de acceso, ya que recibo un mensaje de que no se conoce ese método en stdClass.
El arhivo es el siguente:
Código PHP:
/**
* @version $Id: gmail.php 11236 2008-11-02 02:44:35Z ian $
* @package Joomla
* @subpackage JFramework
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
/**
* GMail Authentication Plugin
*
* @package Joomla
* @subpackage JFramework
* @since 1.5
*/
class plgAuthenticationGMail extends JPlugin
{
/**
* Constructor
*
* For php4 compatability we must not use the __constructor as a constructor for plugins
* because func_get_args ( void ) returns a copy of all passed arguments NOT references.
* This causes problems with cross-referencing necessary for the observer design pattern.
*
* @param object $subject The object to observe
* @param array $config An array that holds the plugin configuration
* @since 1.5
*/
function plgAuthenticationGMail(& $subject, $config) {
parent::__construct($subject, $config);
}
/**
* This method should handle any authentication and report back to the subject
*
* @access public
* @param array $credentials Array holding the user credentials
* @param array $options Array of extra options
* @param object $response Authentication response object
* @return boolean
* @since 1.5
*/
function onAuthenticate( $credentials, $options, &$response ){
$message = '';
$success = 0;
if(strlen($credentials['username']) && strlen($credentials['password']))
{
$client = new SoapClient("http://localhost/laprog/ejemploWebService/serviciosHD.wsdl");
$username = $credentials['username'];
$passwd = $credentials['passwd'];
//print_r($client->getUserAuthWS($username,$passwd));
$existe = $client->getUserAuthWS($username,$passwd);
if($existe){
$message = 'Acceso Permitido';
$success = 1;
}else{
$message = 'Acceso Denegado';
}
}else{
$message = 'Nombre de usuario o contraseña vacío.';
}
if ($success){
$response->status = JAUTHENTICATE_STATUS_SUCCESS;
$response->error_message = '';
$response->email = $credentials['username'];
$response->fullname = $credentials['username'];
}else{
$response->status = JAUTHENTICATE_STATUS_FAILURE;
$response->error_message = 'Error al autenticarse: ' . $message;
}
}
}
Como es la primera vez que trabajo programando un plugin de estos, no estoy muy seguro de cuál es la falla, así que sería fenomenal si alguien pudiera ayudarme.
Ah! y también he revisado el plugin de autenticación que viene de ejemplo y al parecer concuerdan...
Gracias!
************************************************** ****************
************************************************** ****************
Hola de nuevo!
Todavía no he encontrado la solución al problema, pero haciendo pruebas me doy cuenta que cuando tengo publicado el plugin que creé, se presenta el mismo error al tratar de acceder a la cuenta del administrador (backend), pero cuando lo despublico o lo dejo de segundo, es decir, que me logueo usando el formulario normal de joomla, funciona bien, pero de todas formas no es lo que necesito.
En un foro de joomla en inglés encontré esto:
http://forum.joomla.org/viewtopic.ph...59099#p1359099
Y al parecer alguien pudo solucionar el problema, pero yo no lo he conseguido y todavía no conozco la causa exacta del problema...
Seguiré investigando...
Hasta pronto!
************************************************** ****************
************************************************** ****************
Hola a todos! otra vez yo!
Bueno, ya he solucionado el problema, pero me parece muy extraño y no sé si lo que hice me ayudó...
En la sugerencia que aparece en el link anterior, dicen que hay que publicar el plugin de joomla y el del usuario de joomla, hasta ahí todo bien, pero lo raro es que yo he publicado los dos plugins (joomla y el que he creado), y luego de hacer varias pruebas y modificar el orden en el que se deben mostrar funcionó bien poniendo el órden 0 (primero) al nuevo plugin y el órden 2 al plugin del joomla, muy raro pero ha funcionado.
Si alguien tuvo este problema antes y conoce la verdadera solución que por favor me lo diga, así salgo de la duda.
Gracias y hasta pronto!