Error en roles (capabilities). Expediente X

Error en roles (capabilities). Expediente X

de Javier Rodríguez -
Número de respuestas: 5
Hola gente!
Antes de llamar a Mulder y Scully para que vengan a investigar por qué no me funciona las "capacidades", os pregunto por si es algo que hago mal...

Resulta que he definido el archivo access.php de la siguiente manera, idéntica a el fichero de access.php de las tareas:

$mod_remoterunning_capabilities = array(

'mod/remoterunning:view' => array(

'captype' => 'read',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'guest' => CAP_ALLOW,
'student' => CAP_ALLOW,
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
),

'mod/remoterunning:submit' => array(

'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'student' => CAP_ALLOW
)
),

'mod/remoterunning:grade' => array(

'captype' => 'write',
'contextlevel' => CONTEXT_MODULE,
'legacy' => array(
'teacher' => CAP_ALLOW,
'editingteacher' => CAP_ALLOW,
'admin' => CAP_ALLOW
)
)
);

En la librería de funciones, en la función view() (utilizo clases), tengo el siguiente código:

$context = get_context_instance(CONTEXT_MODULE,$this->cm->id);
require_capability('mod/remoterunning:view', $context);
 
...

$this->view_header();

$this->view_intro();
...

Pues... no funciona. Entrando como profesor del curso y creando el módulo me sale el siguiente error:

Sorry, but you do not currently have permissions to do that (Ver Remote Running)

¿Alquien sabe por qué? Es increíble, me he basado en el código de las tareas (assignments) y no funciona!! He actualizado el módulo y tampoco funciona...
¿A parte del fichero access.php hay que insertar algo en las tablas? O solo con el fichero access funciona?
Promedio de valoraciones: -
En respuesta a Javier Rodríguez

Re: Error en roles (capabilities). Expediente X

de Iñaki Arenaza -
Imagen de Desarrolladores Imagen de Desarrolladores de plugins Imagen de Documentadores Imagen de Moderadores Imagen de Moodlers de gran ayuda
No tengo ni idea de porque no funciona (mi experiencia con los roles es nula), pero creo recordar que el fichero access.php sólo se procesa cuando se instala el módulo. Con lo que si lo añades una vez que el módulo ya está instalado en el sistema, no tendrá efecto ninguno.

Igual van por ahí los tiros...

Saludos. Iñaki.
En respuesta a Javier Rodríguez

Re: Error en roles (capabilities). Expediente X

de Pablo Carnero Liñán -
Buenas

Prueba a entrar como administrador al apartado de usuarios->permisos->definir roles y ver si el usuario profesor efectivamente tiene los permisos que has definido.
En respuesta a Pablo Carnero Liñán

Re: Error en roles (capabilities). Expediente X

de Javier Rodríguez -

Hola!

Gracias Iñaki y Pablo por contestar!

Perdonad que no haya contestado hasta hoy pero estoy liadísimo intentando terminar el módulo, que parece eterno. Me surgen "pequeños" problemas que voy solucinando poco a poco... sí, este de los permisos es uno de ellos!

Sobre lo que me comenta Iñaki: he reinstalado el módulo y sigue ocurriendo... Mi módulo tiene una funcinalidad muy parecida al módulo tarea, con lo que el fichero access.php fue copiar y pegar, cambiando todo lo necesario en el código fuente del mismo fichero para adaptarlo a mi módulo.

En cuanto a lo que me comenta Pablo: ¿es realmente necesario comprobar los roles? ¿Cada vez que se inserta un módulo nuevo no predefinido en Moodle hay que asignar permisos? Lo digo porque he enreado con el módulo tarea, creando una con el profesor y visualizándola con el alumno y profesor y funciona perfectamente. Además, el código fuente que controla los permisos en mi módulo y en el módulo tarea es exactamente el mismo.

Gracias y saludos!!!!

En respuesta a Javier Rodríguez

Re: Error en roles (capabilities). Expediente X

de Pablo Carnero Liñán -
Hola Javier

Yo sólo te dije que lo comprobaras para ver si se habían instalado correctamente los permisos al actualizar el módulo...
En respuesta a Pablo Carnero Liñán

Re: Error en roles (capabilities). Expediente X

de Javier Rodríguez -
Pues el expediente X ha sido resuelto...

Resulta que el nombre de la carpeta donde reside el módulo tiene que denominarse exactamente igual que los permisos del archivo access.php, es decir, si el nombre del permiso es 'mod/remoterunning:view', la carpeta tiene que denominarse remoterunning y yo la tenía como Remote Running.

Gracias a todos por la ayuda prestada, un saludo!!!