Login Usando Email у Username en Joomla!
Algo que Joomla! no permite nativamente es el inicio de sesiуn usando tambiйn el E-Mail del usuario, me puse a buscar un poco en el cуdigo y encontrй una manera simple de hacerlo y que el mismo sistema detecte si es un E-Mail o el Username del usuario en cuestiуn.
Este hack lo hice en la versiуn 1.0.15 de Comunidad Joomla!
includes/joomla.php - Lнnea 1054
$check_username = md5( $user->username . $harden );
Cambiamos por:
// Condiciones para login via E-Mail
if(eregi("@",$username)){
$check_username = md5( $user->email . $harden );
}else{
$check_username = md5( $user->username . $harden );
}
//$check_username = md5( $user->username . $harden );
Lнnea 1072:
$query = "SELECT id, name, username, password, usertype, block, gid"
. "\n FROM #__users"
. "\n WHERE username = ". $this->_db->Quote( $username );
Cambiamos por:
// Condiciones para login via E-Mail
if(eregi("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$",$username)){
$quer = "\n email = ". $this->_db->Quote( $username );
}else{
$quer = "\n username = ". $this->_db->Quote( $username );
}
$query = "SELECT id, name, username, password, usertype, block, gid"
. "\n FROM #__users"
. "\n WHERE ". $quer
;
Y eso es todo, podemos usar ya el E-Mail o Username del usuario para iniciar sesiуn.
їCуmo funciona?
El funcionamiento es simple, el script hace una detecciуn de lo que la cadena $username contiene, es por eso que uso eregi, como parбmetros pongo una estructura de como deberнa ser un E-Mail valido, si se detecta que la cadena cumple con esta estructura hace el query con el E-Mail, de lo contrario, hace el query con el Username.
Espero les sea de ayuda este pequeсo hack.
Saludos.