Correc. - Mejora #3462
cerradaFallo de permisos por rol para Comentarios en Agente > Tareas
0%
Descripción
Started POST "/agentes/32/resumen_agente/comentario/comentarios?objeto_id=21&tipo=Tarea&update=tarea_sub_1" for ::1 at 2018-10-17 16:03:34 +0200 Processing by ComentarioController#comentarios as HTML Parameters: {"objeto_id"=>"21", "tipo"=>"Tarea", "update"=>"tarea_sub_1", "seccion"=>"agentes", "agente_id"=>"32", "menu"=>"resumen_agente"} Usuario Load (0.3ms) SELECT `usuario`.* FROM `usuario` WHERE `usuario`.`id` = 1 LIMIT 1 Agente Load (0.2ms) SELECT `agente`.* FROM `agente` WHERE `agente`.`id` = 32 LIMIT 1 (0.4ms) SELECT COUNT(*) FROM `permiso_x_rol` INNER JOIN `rol` ON `rol`.`id` = `permiso_x_rol`.`rol_id` INNER JOIN `usuario_x_agente` ON `usuario_x_agente`.`rol_id` = `rol`.`id` WHERE `usuario_x_agente`.`usuario_id` = 1 AND `usuario_x_agente`.`agente_id` = 32 AND `permiso_x_rol`.`ver` = 1 AND `permiso_x_rol`.`menu` = 'resumen_agente' AND `permiso_x_rol`.`controlador` = 'comentario' --AUTORIZACION--> Permiso lectura (nuevo) denegado
Actualizado por Jaime Ortiz hace alrededor de 6 años
No cerrramos ticket. Quizá se incluye un migrate al final de la version para incluir el permiso para los roles.
En la consola se ha ejecutado:
PermisoXRol.create rol_id: 12, menu: "resumen_agente", controlador: "comentario", ver: true, cambiar: true
Solo para el rol 12.
Actualizado por Santiago Ramos hace alrededor de 6 años
Esto no es mejor hacerlo desde la consola de administracion par los roles que se quiera modificar?:
/administracion/datos_configuracion/rol/listado
En una instancia concreta quizás esté bien pasarle el comando, pero en una migración afectará al rol con ese ID sea cual sea en la instancia que aplique.
Si el tema va más de roles generales para cualquier nueva instancia, lo mejor es modificar la generación inicial de roles (que veo que ya habéis modificado en el repo)
Actualizado por Jaime Ortiz hace alrededor de 6 años
Estamos de acuerdo. De momento solo lo hemos metido en el rake de asignar permisos.
El migrate tendría como única finalidad recorrer todos los roles "creando" el permiso asociado a ese controlador, en ese menú, pero con sin dar permisos de "ver" o "cambiar".
Osea básicamente no cambiarían los permisos si no que evitaríamos que de un fallo de que no existe permisos relativos a ese controlador en ese menú.
Pero vamos, de momento creo que crearemos los permisos para cada rol desde consola, o quizá desde una tarea rake privada.
El ticket lo dejo abierto para que recordemos que tenemos que asignar permisos para ese contraolador.
Gracias!!
NOTA (quizá para otro momento)
Quizá el asunto que facilitaría el tema de los permisos es crear una tabla Permiso, así tendríamos:
Permiso, Rol y PermisoXRol
Esto haría mas fácil el dar de alta opciones que faltan (Permisos) y que queden automáticamente disponibles para todos los roles.
Actualizado por Santiago Ramos hace alrededor de 6 años
Ok, aunque no entiendo del todo lo propuesto: el crear un permiso_x_rol en el que no se puede ver ni cambiar es equivalente a no crearlo. Porqué se quiere hacer esto?. Algo me he perdido por que en la descripción del ticket tan sólo aparece un aviso de que se está intentando acceder a un controlador sobre el que no se tienen permisos, lo cual es correcto.
Actualizado por Santiago Ramos hace alrededor de 6 años
Sobre el último comentario:
Jaime Ortiz escribió:
[...]
NOTA (quizá para otro momento)
Quizá el asunto que facilitaría el tema de los permisos es crear una tabla Permiso, así tendríamos:
Permiso, Rol y PermisoXRol
Esto haría mas fácil el dar de alta opciones que faltan (Permisos) y que queden automáticamente disponibles para todos los roles.
Esto ya está sucediendo y de forma desatendida, no hace falta ninguna tabla adicional: Los permisos se validan contra lo existente en el menú de controladores o las dependencias declaradas en él y el alta de estos en la administración de roles igual. Por lo tanto, si se crea una nueva opción de menú automáticamente está disponible para asignar en la administración del sistema sin que necesite incluirse, además, en ninguna tabla nueva.
De hecho, tal y cómo está planteado el formulario de nuevo permiso, se presenta tan sólo aquellos controladores que aún no tienen ninguna definición lo que permite saber más rápidamente qué permiso pudiera faltar a un rol concreto sin necesidad de revisar el listado y verificar que la columna de "leer" está a false.
Actualizado por Jaime Ortiz hace alrededor de 6 años
Creo que entiendo de donde venia mi malentendido.En el metodo datos_formulario_controladores_menu :
https://git.semillasl.com/gong/gor/blob/master/app/controllers/rol_controller.rb#L165
Se incluyen otros controladores que pueden ser rellenados para cada opcion del menú.
Es decir, si quiereo que en la interfaz de usuario ...
/administracion/datos_configuracion/rol/listado
... me aparezca el controlador que falta para un determinado menú, tengo que hacer como he hecho en este commit:
https://git.semillasl.com/gong/gor/commit/e112cb03008ed848f1e541396051f1bbf088d7b4
En vez de meter mas permisos_x_rol en el "reasigna permisos" ni escribirlo a mano por consola ¿No?
Actualizado por Jaime Ortiz hace alrededor de 6 años
- Estado cambiado de Nueva a Resuelta
Actualizado por Santiago Ramos hace alrededor de 6 años
Jaime Ortiz escribió:
Creo que entiendo de donde venia mi malentendido.En el metodo datos_formulario_controladores_menu :
https://git.semillasl.com/gong/gor/blob/master/app/controllers/rol_controller.rb#L165
Se incluyen otros controladores que pueden ser rellenados para cada opcion del menú.
Es decir, si quiereo que en la interfaz de usuario ...
/administracion/datos_configuracion/rol/listado
... me aparezca el controlador que falta para un determinado menú, tengo que hacer como he hecho en este commit:
https://git.semillasl.com/gong/gor/commit/e112cb03008ed848f1e541396051f1bbf088d7b4
En vez de meter mas permisos_x_rol en el "reasigna permisos" ni escribirlo a mano por consola ¿No?
Correcto, es así... en principio es un poco raro hacerlo ahí, pero se aprovecha de esa forma la definición del menú para permitir la asignación de nuevos permisos => Si se cambia el menú también hay que cambiar las asignaciones, luego todo encaja