Consultar usuario y password de Moodle

Consultar usuario y password de Moodle

de albert trabal arroyo -
Número de respuestas: 5

Hola,

soy novato en esto. Nose si se habrá hecho la pregunta ya mil veces, disculpen de antemano, pero quien sepa la respuesta serán 3 minutos de su tiempo que me ahorrarán a mi unas horas lo cual le estaré muy agradecido.

Estoy desarrollando una aplicación que se conecta con la base de datos de Moodle y necesito validar el usuario y password de la base de datos de Moodle (sin usar las funciones de Moodle, directamente la consulta).

Imagino que será una cosa así:

SELECT * FROM mdl_user WHERE username=$usuario AND password=?$password

El ? es porque nose si estará codificado, si se tiene que poner md5($password) o que tipo de encriptación.

También necesito saber si el rol de este usuario es admin.

Aquí es donde ya no se mucho porque no conozco la estructura de la bbdd de Moodle ni las relaciones.

Gracias!

Promedio de valoraciones: -
En respuesta a albert trabal arroyo

Re: Consultar usuario y password de Moodle

de Raul Garcia Canet -

Hola Albert, 

No se con que versión de Moodle estás tabajando. En cualquier caso, lo que necesitas no creo que puedas hacerlo sin usar las funciones de Moodle.

Desde Moodle 1.9.7 se usa "Salado de contraseñas"http://docs.moodle.org/19/es/report/security/report_security_check_passwordsaltmain El salado se configura automáticamente en las nuevas instalaciones; para las actualizadas desde versiones más antiguas en el área de notificaciones se recomienda a los administradores que utilicen dicha funcionalidad para aumentar su seguridad. (Fuente: Iñaki Arenaza - Aqui)

Así que si estás trabajando con una versióna superior a la 1.9.7, no es tan sencillo hacer la consulta.

Por otro lado: 

Saber si un usuario es admin, requiere una consulta bastante compleja y además en versiones basadas en 2.X, ya no se comprueba de la misma forma. Las funciones han cambiado bastante y la cosa se complica. 
Hasta la versión 1.9.14+ se usa la consulta de la funcion is_siteadmin():

http://xref.moodle.org/lib/accesslib.php.source.html#l544 

En Resumen:
La verdad es que hacer lo que pretendes sin usar las funciones de Moodle es bastante complejo. 
Hay que tener MUY buen conocimiento de la BD de Moodle y sus relaciones. Aun así, dudo mucho que sea una tarea fácil.

Si te soy sincero, yo me replanteria si relamente es necesario acceder a Moodle de esa forma.
Quizás usando los Web Service de Moodle sería un poco más sencillo, pero depende también de la versión que tengas ya que éstos se encuentran toavia en una fase muy temprana de madurez.

Siento no ser de más ayuda, 

Salu2
J. Raul (juagarc4) guay

En respuesta a albert trabal arroyo

Re: Consultar usuario y password de Moodle

de Xavier Paz -

La password está en md5 y además usa un cosa llamada salado, que no es más que otra cadena de caracteres más, alojada en config.php como salt, para complicar más codificación. En otras palabras, lo almacenado en el campo password de la tabla user es md5(clave + salado)

Para el resto, tienes toda la info en http://docs.moodle.org/dev/Database_schema_introduction

http://moodle.org/mod/forum/discuss.php?d=3935

PD: ¿Para qué versión de moodle es?

En respuesta a Xavier Paz

Re: Consultar usuario y password de Moodle

de albert trabal arroyo -

La versión es 2.0.5. Lo instalé directamente de cdmon. Es para un proyecto, muy a malas podria instalar otra versión (no es necesario tener esta versión).

No sabía yo que se complicaba tanto la cosa. Especifico un poco más a ver si me pueden ayudar entonces. Estoy usando un framework php (CodeIgniter), tengo mi propia base de datos y tengo la base de datos de Moodle. Con un login necesito saber si el usuario está en Moodle para redireccionar a Moodle, y necesito saber si el usuario es admin de Moodle para redireccionar al CMS que estoy desarrollando.

Hay alguna manera entonces de usar las funciones de Moodle des de un Framework php?

Lo del usuario y password, ahora que lo pienso, a lo mejor no hace falta encriptarlo. Si yo tengo ejemplo de password 1234 en el Moodle, y yo consulto ese password (lo extraigo de bbdd) y lo comparo con el que he entrado en el input del formulario (1234), hace falta que haga la encriptación para compararlos y sean iguales?

Si fuera tan complicado que no se puede acceder a las funciones de Moodle y la consulta es rebuscada, podría crear una tabla de admins en mi bbdd, y lo que si se puede hacer (creo que he visto algun tema de esto), es sincronizar una bbdd con la de Moodle no? Tener los admins en mi bbdd, sino tambien directamente los usuarios.

Nose, vosotros que domináis el tema, a ver que me aconsejan. ;)

Muchas gracias por su tiempo!

En respuesta a albert trabal arroyo

Re: Consultar usuario y password de Moodle

de Javier Navarro -

Buenas.

Entonces deberias guardar el password de la bbdd en una $variable1. 

Luego encriptar el password que te llega por GET o como sea, usando el salt (esta en el config.php) y guardarlo en otra $variable2. Comparas y listos.

En respuesta a Javier Navarro

Re: Consultar usuario y password de Moodle

de albert trabal arroyo -

Ya lo solucioné:

Por si alguien le interesa dejo la solucion. Consultar password de la base de datos y comparar con el password del input con md5($pass.'codigo salado del config').

Gracias por vuestras respuestas!