• Drupal 7: Gestión de usuarios y permisos

    La gestión que hace Drupal de usuarios y permisos es bastante completa  y es uno de los puntos que le hace destacar por encima de otros gestores de contenidos populares que parece que siempre van a remolque en este aspecto.

    El sistema de permisos utilizado por Drupal se basa en el concepto de 'rol' término conocido por todos aquellos que hayan trabajado con los sistemas de permisos de las bases de datos y cuyo funcionamiento es muy parecido. Drupal permite crear tantos roles como sean necesarios para la aplicación que estemos desarrollando. Por defecto existen tres roles que son el usuario anónimo, el de usuario autenticado y el de administrador (este último es una novedad).

     

    La forma de trabajar es otorgar los permisos a los roles y asignar éstos últimos a los usuarios del sistema. Por lo que los permisos son compartidos por todos aquellos usuarios que ostentan el mismo rol en el sistema. El listado de permisos que ofrece el core es bastante extenso e irá en aumento a medida que vayamos instalando nuevos módulos  que aporten sus propios permisos.

    En lo que se refiere a la visibilidad de los contenidos del sistema el core permite entre otros:

    • Ver el contenido publicado.
    • Crear contenido de cada uno de los tipos de datos del sistema.
    • Editar el contenido de estos tipos de datos. Sólo el propio o también el creado por otros usuarios.
    • Borrar el contenido. Propio o también el creado por otros usuarios.

    Para ciertas aplicaciones esta gestión de permisos sobre el contenido es suficiente, pero para otras se queda corta, en este caso habrá que recurrir a módulos contribuidos que aumenten la granularidad de este sistema. Hay muchos módulos que realizan esta función y no podemos explicarlos todos. En este artículo, vamos a presentar tres de ellos que cubren casi todo el espectro de configuraciones y combinaciones de permisos que podríamos encontrarnos.

    Field Permissions

    En Drupal 7 gran parte de los módulos CCK se ha incluido en el core, pero no se incluyó el módulo Content Permission. Field Permissions viene a sustituir a este módulo aunque con ciertas mejoras que comentaremos. A grandes rasgos lo que te permite es gestionar los permisos (visibilidad, edición...) a nivel de campos de cada uno de los tipos de datos del sistema.

    Hay que destacar la mejora de la usabilidad que tiene este módulo con respecto a la de su predecesor. Para ver su funcionamiento basta con instalarlo, irnos a cualquier tipo de datos del sistema y editar  uno sus campos. Como vemos en la siguiente imagen han aparecido las siguientes opciones:

     

    • Público: campo visible para todo el mundo y editable por cualquier rol que tenga permisos de edición sobre ese tipo de datos.
    • Privado: visible sólo por su creador y el administrador.
    • Personalizado: Donde podemos configurar su comportamiento para cada una de las acciones y roles del sistema.

    Como podemos observar es un sistema bastante completo con el que podemos llegar a alcanzar un grado de granularidad bastante alto.

    Además, gracias a que Drupal 7 dejó de ser "Nodocentrista" para pasar a ser "Entidadcentrista" y con ello todas las entidades pueden tener campos este sistema de permisos no se reduce a los nodos como era el caso de drupal 6 y cck sino que es aplicable a cualquier campo que tengamos en el sistema, ya pertenezcan a tipos de datos, como a perfiles de usuario...

    Content Access

    Vale el módulo anterior esta muy bonito, pero lo que realmente quiero es poder decidir  que tipo de datos puedo ver, editar ... y no dar sólo permiso a todos en general. Pues bien, justamente content access permite hacer eso y algunas cosas más.

    Una vez instalado el módulo, si editamos cualquier tipo de datos del sistema veremos que ha aparecido una pestaña llamada Access Control desde la que podremos configurar los permisos específicamente para ese tipo de datos.

     

    Como podemos observar en la imagen podemos definir permisos de visibilidad, edición y borrado de contenido para este tipo de datos.

    Si observamos en la parte inferior de la imagen existe un checkbox (per content node access...) que podemos  también habilitar. Si lo hacemos lo que conseguimos es  que los permisos anteriormente definidos puedan ser sobreescritos para un contenido en concreto. Por ejemplo, permitiría que un rol que no tuviese permiso de edición de el tipo de datos página pudiera editar una página en concreto.

    Al haber habilitado este checkbox ha aparecido una pestaña nueva en cada contenido que nos permite realizar dicha sobreescritura de permisos.

     

     

    Taxonomy Access Control

    Este módulo basa su funcionamiento en la gestión de permisos a traves de taxonomías. Podemos definir reglas de visibilidad, edición y borrado según la presencia o no de uno o varios términos de una taxonomía. De esta forma podríamos restringir el acceso a contenido etiquetado como "premium" a todos aquellos roles que poseyerán dicha regla.

    Para ello, una vez habilitado el módulo nos vamos a su panel de configuración desde donde podemos crear las reglas de acceso para cada uno de los roles del sistema.

     

    El panel de creación de reglas es un poco confuso, pero suficiente. Basicamente lo que hay que hacer es ir seleccionando los términos con los que queramos gestionar las reglas y gestionar que permisos vamos a otorgar. Lo podemos ver en la siguiente imagen.

    Una vez creadas las reglas la visibilidad del contenido del sitio pasará a estar gestionada por taxonomías.

     

     

    Como hemos podido comprobar con estos tres módulos la flexibilidad alcanzada por el sistema de permisos de Drupal 7 es bastante grande. Cabe decir que existen otros módulos que si bien no están directamente enfocados a la gestión de permisos también tienen su  propio control de los mismos como pueden ser Views, Panels.

    En este sentido, cabe destacar también el módulo Organic Groups, pero éste merece un próximo artículo.

    Share this post

    Curso de Drupal


    Sobre Nosotros

    Mediaglobe Innova, empresa creada en Málaga, se presenta como un grupo joven de ingenieros y profesionales dedicados a la investigación, diseño, desarrollo y aplicación de tecnologías de la información para la innovación en la empresa.

    Últimos Tweets

    Facebook