Skip to content


Sistema de permisos, roles y privilegios

El primer sistema que cáscaras propone para administrar los permisos de una aplicación está inspirado en varios intentos fallidos y el nuevo sistema que usa moodle para la asignación de permisos a roles.

El segundo sistema, del que no hablaré hoy, ni se cuando lo haré, estaría basado en ACLs (listas de control de acceso) y es el más adecuado para aplicaciones con objetos que tienen varios niveles de anidamiento (por ejemplo la gestión de ficheros y directorios).

Intentaré daros una visión de conjunto y ya iré desarrollando el tema a medida que lo vaya depurando.

La gestión de permisos se basa en tres conceptos:

  • Roles: el papel que tiene asignado cada usuario en un contexto determinado. En el caso de moodle los roles son: estudiante, profesor, administrador, etc.
  • Contextos: es el ámbito al que afecta el permiso. Hay permisos que afectan al sistema completo, otros a determinados módulos o funcionalidades del mismo, etc. Ejemplos de contexto en moodle son: sistema, curso, cuenta de usuario, categoría de curso.
  • Capacidades: son las distintas acciones sobre las que recaerán los permisos. En moodle: leer mensajes, crear curso, editar tema, etc

La asignación a un rol de una capacidad en un contexto determinado definiría un permiso. Por ejemplo, y siguiendo con los ejemplos de moodle, un permiso sería el conceder al rol de profesor la capacidad de agregar alumnos en el contexto de un curso determinado.

Por tanto al definir una capacidad tenemos que definir sobre que tipo de contexto actuará, luego al definir el permiso diremos a que identificador de ese contexto corresponde.

Por ejemplo, el usuario “Cocoliso” (id 1024) tiene el rol de “Profesor”(rol 3) en el curso (contexto 5) “Cata de vino” (curso 245). Si intenta “crear un nuevo tema” (capacidad 25) dentro del curso el sistema mirará en la tabla permisos si el rol “3” tiene permiso para la capacidad “25” y anotará en su memoria que el contexto es el “5”. Entonces mirará en la tabla usuario_curso si el usuario “1024” tiene el rol “3” para el curso “245” y si es así le autorizará para ejecutar la acción de crear el nuevo tema.

(Bueno faltan cosas por aclarar, esquemas de tablas, nombres de funciones, etc. Pero lo voy publicando ya por alguien quiere ofrecerme consejo, hacerme sugerencias o preguntarme alguna duda)

Posted in General.

Tagged with , , , , , .


3 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. Juan Antonio says

    El enfoque del tema acl en cakePhp.
    Lo estuve mirando hace un par de años, parece bastante flexible y comodo. También puedes ver algo sobre la implementación del componente ACL (código) y de la implemetación en base de datos o en ficheros .ini.

  2. Juanan Ruiz says

    He encontrado este otro esquema de permisos (en este caso usando Ruby pero traducible a php) que me ha gustado más aún que el propuesto más arriba y que además suena muy natural.
    http://github.com/jnunemaker/canable

  3. Juanan Ruiz says

    He encontrado un nuevo recurso para gestionar acls con php: http://phpgacl.sourceforge.net/manual.pdf



Some HTML is OK

or, reply to this post via trackback.



Ir a la barra de herramientas