¿Qué necesitas saber sobre Joomla 1.6? Niveles de control de accesos en la ACL de Joomla 1.6

Guía de 15 minutos sobre los niveles de acceso en la ACL de Joomla 1.6

Este artículo es una traducción del artículo original escrito por Jen Kramer para el Joomla! Community Portal. Puedes leer el artículo original en inglés aquí

Si has oído algo sobre Joomla 1.6, lo más probable es que hayas escuchado hablar más sobre dos nuevas características que sobre las otras: Categorías anidadas y algo llamado ACL.

ACL significa Access Control Levels ( Niveles de control de acceso). Se refiere a quién tiene permiso para realizar determinadas cosas en un sitio web, incluyendo operaciones como leer, crear, editar, eliminar o hacer login, entre otros permisos.

Muchos piensan que la ACL está relacionada sólo con el front end de un sitio web. Por ejemplo, cuando me logueo en un sitio web ¿ que artículos están disponibles para mi? Y si alguien más se loguea en la web, ¿ve los mismos artículos que yo o ve unos diferentes?

Sin embargo, ACL también está relacionada con quién tiene permisos para crear, editar y eliminar contenido; quién puede publicar y despublicar contenido; quien puede hacer login en el front end o en el back end; y quién puede realizar cambios a algunos componentes y módulos.

Solo porque puedas hacerla no significa que la tengas utilzar. La ACL es compleja y se necesita algún tiempo para comprender perfectamente como funciona. Para muchos sitios, quizás para la mayoría de ellos, puede que no necesites cambiar la configuración por defecto de Joomla. Sin embargo, si estás construyendo un sitio web grande, puede ser útil.

Ejemplos de cuando es necesario incluir una ACL

  • Una intranet de una empresa, donde algunos directores ven un nivel de contenidos, mientras que los empleados ven otro.
  • La web de un colegio, donde padres, profesores, estudiantes y el público general ven diferentes tipos de contenidos.
  • Una web grande con muchos colaboradores, donde no quieres que los colaboradores modifiquen los contenidos de otros y el factor de confianza entre los usuarios no puede funcionar.
  • Una web con multiples blogs, donde los autores no deben publicar en los blogs de otros autores y el factor de confianza entre los usuarios no puede funcionar.

ACL en Joomla 1.5

Joomla 1.5 tiene un ACL con niveles limitados. Si has trabajado con Joomla 1.5 con anterioridad, habrás visto que  puedes establecer un elemento de menu o un artículo para que puedan ser vistos por el público, usuarios registrados o "especial" (autores y superior). Del mismo modo, probablemente sabrás que los usuarios registradores no pueden loguearse en el back end de Joomla, pero un super administrador si puede. La ACL de Joomla 1.5 es jerárquica, esto significa que cada grupo de usuario hereda los permisos de los grupos inferiores.

Una explicación completa de los grupos de Joomla 1.5 puede ser encontrada en brian.teeman.net. Los grupos de Joomla 1.5 son público, usuario registrados, autor, editor, editor jefe, gestor, administrador y super administrador.

Los niveles de acceso de Joomla 1.5 son público, registrado y especial. Una explicación de los niveles de acceso se puede ver en Revision Technology.

ACL en Joomla 1.6: Información general

La ACL de Joomla 1.5  no es jerárquica. Puedes crear grupos con los permisos que necesites. Estos permisos son heredados de los padres en el caso de los grupos, pero no son heredados en el caso de los niveles.

Hay cuatro aspectos a tener en cuenta en el sistema de ACL de Joomla 1.6. Los usuarios, los grupos, los permisos y los niveles de acceso. Estos cuatro aspectos han sido representados en el siguiente diagrama para describir sus relaciones. A continuación se verán en detalle.

Diagrama de funcionamiento de la ACL

User

Este es el más facil de comprender — eres tu o alguien que visita el sitio web. Un usuario no tiene porque tener una cuenta de acceso en el sitio web para ser considerado como tal. Será considerado un usuario público. Estos usuarios únicos pueden ser asignados a uno o más grupos. No se les puede asignar permisos directamente a los usuarios, sino que estos permisos son asignados a los grupos.

Core Permissions

Los permisos se asignan a los grupos y no son asignados a usuarios individuales. (Si quieres asignar permisos a un solo usuario, tendrás que crear un grupo en el que solo estará ese usuario.)

Tipos de permisos:

  • Site login: capacidad para hacer login en el frontend del sitio web.
  • Admin login: capacidad para hacer login en el back end de un sitio web.
  • Admin: privilegios de administrador (root), como por ejemplo cambiar la configuración global.
  • Manage: capacidad para cambiar los ajustes de las extensiones.
  • Create: capacidad de crear nuevo contenido.
  • Delete: capacidad de eliminar contenido.
  • Edit: capacidad de editar contenido, que no tiene porque ser necesariamente tuyo.
  • Edit state: capacidad de cambiar el estado entre publicado, no publicado y basura.

Los core permissions se configuran en el apartado Configuración global, en Site >> Global Configuration y después accediendo a la pestaña de Permisos.

Group

Un grupo es un conjunto de usuarios que comparten los mismos permisos. Usando los grupos de Joomla 1.5 como ejemplo, el grupo editor tiene derechos para hacer login en el front en del sitio web, crear nuevos artículos, editar artículos y publicar o despublicar artículos. Cualquier usuario incluído en grupo editor tienen los mismos permisos para realizar esas acciones.

A diferencia de Joomla 1.5, un usuario puede ser asignado a multiples grupos. Un usuario puede formar parte del grupo de editores y también puede estar incluido en el grupo de administradores por ejemplo.

Es posible crear tus propios grupos y asignarles los permisos que necesites. Los permisos entre grupos se pueden heredar.

Un grupo podría ser creado por dos razones diferentes. Una sería para ver el contenido del front ent del sitio web. La otra sería para especificar que tipo de contenido puede ser creado, editado, eliminado, publicado o despublicado, o gestionado por ese grupo.

Un usuario que visita el sitio web es considerado un miembro del grupo público.

El grupo público y el grupo registrados no deberían ser borrados, pero el resto de grupos si pueden serlo. (Sin embargo, Es recomendable mantenerlos, porque dan un buen modelo para estudiar como funciona la herencia de permisos).

Access Level

Los niveles de acceso se refieren a que tipo de contenido puede ver un usuario en el front end del sitio web. En esencia, esto es equivalente a los permisos de lectura en el front end del sitio web.

Históricamente existían tres niveles de acceso: público (cualquiera puede ver el contenido), registrado (debes estar logueado para ver el contenido), o especial (debes estar logueado como autor o un grupo superior para ver el contenido).

En Joomla 1.6 por defecto están creados los tres niveles de accesos, pero también existe la posibilidad de crear tus propios niveles.

Los niveles de acceso no heredan los permisos. Si en un artículo se establece que solo puede ser visto por editores, un super administrador no podrá ver dicho artículo en el front end. Debe ser asignado al grupo de editores para poder ver el artículo. (Sin embargo, como super administrador, tiene la capacidad de editar el artículo en el back end).

Quiero que diferentes personas vean diferente contenido cuando se loguean

Ahora que tenemos una idea de la terminología de la ACL veamos como se implementa un sistema sencillo en Joomla 1.6

Antes de empezar a hacer clicks en Joomla hay que estudiar la estrategia que vamos a utilizar para implementar la ACL. Comencemos por describir el problema que vamos a intentar resolver.

Ejemplo para la web de una escuela

  • El público general puede visitar la web y ver la mayoría del contenido. Sin embargo, existe contenido que solo será para profesores y alumnos.
  • Un profesor puede ver el contenido específico para profesores, todo el contenido de los alumnos y el contenido para el público general.
  • Los alumnos solo pueden ver el contenido de los alumnos (no el contenido de los profesores) y el contenido para el público general.

Notese que estamos hablando solo del contenido que se puede ver. No se ha hablado sobre editar, crear, eliminar o gestionar el contenido. Esto apunta a un problema de lectura o de nivel de acceso.

Se han descrito tres grupos: público, alumnos y profesores. El grupo público existe por defecto en Joomla, pero es necesario crear el grupo alumnos y el grupo profesores. Todos estos usuarios al estar logueados en el sitio web podrán ver más contenido, por lo que los únicos permisos que se necesitan asignar a estos grupos es la capacidad de loguearse en el front end. En esencia, profesores y alumnos son usuarios registrados.

Es necesario crear el contenido de forma que los profesores puedan ver su contenido y el contenido de los alumnos, mientras que los alumnos solo pueden ver el contenido creado especificamente para ellos.

Una aproximación a estre problema sería la siguiente.

  1. Crear nuestros grupos, llamados "students" and "teachers".
  2. Asignar permisos a los grupos. En este caso se asigna el permiso Site Login.
  3. Crear nuestros usuarios y asignarlos a los grupos. Se ha creado uno llamado "student" y otro llamado "teacher" para el ejemplo, pero en la vida real existirán más usuarios.
  4. Crear un nivel de acceso para los alumnos, y otro nivel de acceso para los profesores.
  5. Create categories for students and teachers, and assign the correct access levels.
  6. Crear artículos para alumnos y para profesores, y asignarlos a los niveles de acceso correspondientes.
  7. Crear un item de menu para alumnos y otro para profesores, y asignarles los niveles de acceso correspondientes.
  8. Comprobar los logins y verificar que funcionan correctamente.

1. Crear nuestros grupos

Para crear un grupo, haz login en el back end de Joomla 1.6

En el menú superior ve a Users - Add New Group. Saldrá la siguiente pantalla.

Añadir grupo de usuario

  1. Para el nombre de grupo introduce Teachers Group.
  2. Para el grupo padre selecciona Registered. El grupo registrados encaja con los permisos que necesitamos para el grupo profesores ( habilidad de hacer login en el front end) Teachers será un subgrupo del grupo de usuarios registrados.
  3. Pulsa el botón Save & New que se encuentra en la esquina superior derecha.
  4. Para el nombre de grupo introduce Students Group.
  5. Para el grupo padre selecciona Registered. Esto pone los grupos Teachers y Students al mismo nivel.
  6. Pulsa Save & Close para guardar el grupo Students y volver a la ventana del administrador de usuarios.

2. Asignar permisos

Al ser el grupo registrados el padre de Students y Teachers, los permisos del grupo registrados han sido heredados. El grupo registrado tenía permisos para hacer login en el front end del sitio web, por lo que no es necesario añadir ningún permiso más a nuestros grupos.

3. Crear nuestros usuarios y asignarlos a los grupos

Ahora que tenemos los grupos creados, se necesitan crear usuarios para estos grupos.

Para hacer esto ve a Users - Add New User y verás la siguiente pantalla:

Añadir nuevo usuario

  • Name: Introduce el nombre completo del usuario, en este caso Ms. Jones.
  • Login Name: Introduce el nombre de usuario: msjones.
  • Password and Confirm Password: Introduce la contraseña dos veces.
  • Email: Introduce el email del usuario.

No rellenes el resto de campos de esta página y ve a Assigned Groups. Notese que por defecto el grupo registrado esta seleccionado y el grupo público esta sombreado. Esto es para recordar que el grupo de registrados hereda permisos del grupo público.

Elije "Teachers" en el listado. Fijate que ahora los grupos público y registrados están sombreados. Esto se debe a que el grupo profesores es hijo del grupo registrados y del grupo público.

Pulsa "Save & New" y repite el mismo proceso con un alumno. El nombre es David Smith, el usuario es david. Asigna a David al grupo Students y pulsa sobre Save & Close.

4. Crear niveles de acceso

Ya tenemos los usuarios, los permisos y los grupos configurados. Es hora de crear dos niveles de acceso, uno para profesores y otro para alumnos.

Ve a  Users - Add New Access Level

Añadir nuevo nivel de acceso

Para el título del nivel introduce Teachers Access Level. Después selecciona el grupo Teachers. Esto hará que solo los profesores puedan ver el contenido del grupo profesores.

Pulsa Save & New, introduce Students Access Level como título del nivel y marca el grupo Students y el grupo Teachers. Esto hará que tanto los alumnos como los profesores puedan ver el contenido del grupo alumnos.

Pulsa Save & Close

5. Crear categorías

Crea una categoría para profesores (usando Content - Add New Category) y en  Access selecciona Teachers Access Level.

Crear categoría

Crea también una categoría para alumnos y en Access selecciona Students Access Level.

6. Crear artículos

A continuación crea un artículo para los profesores en la categoría de profesores. Para crearlo ve a Content - Add New Article.

Crear un artículo

Completa los siguientes campos:

  • Title: Este artículo es para profesores
  • Category: Teachers Category
  • State: Published
  • Access: Teachers Access Level
  • Article text: introduce cualquier texto.

Pulsa Save & New y repite el mismo proceso con los alumnos:

  • Title: Este artículo es para alumnos
  • Category: Students Category
  • State: Published
  • Access: Students Access Level
  • Article text: introduce cualquier texto.

Pulsa Save & Close cuando hayas terminado.

Aunque solo se ha creado un artículo para cada grupo, se pueden crear tantos artículos como se deseen.

7. Crear items de menú

En el menú principal (Menus - Main Menu),  añade los siguientes enlaces, uno para profesores y otro para alumnos.

Para crear un enlace ve a New (esquina superior derecha), selecciona Category List como tipo de menú e introduce la siguiente información:

Añadir nuevo elemento de menu

  • Title: Información para profesores
  • Menu Item Type: pulsa Select y escoge Category List
  • State: Published
  • Access: Teachers Access Level
  • Choose a Category: Teachers Category

Pulsa Save & New, y repite el proceso para estudiantes:

  • Title: Información para estudiantes
  • Menu Item Type: pulsa Select y escoge Category List
  • State: Published
  • Access: Students Access Level
  • Choose a Category: Students Category

Pulsa Save & Close cuando termines.

8. Comprobar los logins

Se ha configurado todos los requisitos necesarios para tener los contenidos de profesores y alumnos.

Antes de realizar el test es recomendable deshabilitar la caché del sitio web. ( Esto se debe a un bug de Joomla 1.6 Beta 6 que es la versión sobre la que estamos realizando el tutorial). Para hacer esto ve a Site - Global Configuration y en la pestaña System pon el valor OFF en  Cache Settings.

Configuración Global. Deshabilitar caché

Pulsa "Save & Close" cuando hayas realizado este cambio.

Ahora ve al front end del sitio web. Introduce tu información de login en el cuadro de inicio de sesión

Introduce usuario y contraseña para la profesora, Ms. Jones. Recuerda que el usuario era msjones y la contraseña la que hayas introducido.

Si lo has hecho todo de forma correcta deberías de poder ver en el menú el enlace de "Información para profesores" y el enlace de "Información para alumnos".  (Si tenías instalados los datos de ejemplo tendrás que bajar hasta el menú "This Site" para ver los links).

Vuelve a la página de login y haz click en el botón Log out. Ahora repite el mismo proceso con el alumno David Smith.

Si todo ha ido bien, ahora solo deberás ver un enlace con la "Información para alumnos"

Conclusiones

Si has seguido este ejemplo probablemente hayans necesitado 15 minutos para completarlo, quizás algo mas si eres un nuevo usuario de Joomla 1.6.

Solo porque puedas hacerla no significa que la tengas que utilzar. La ACL puede consumir mucho tiempo tuyo o de tu cliente. y podría ser extremandamente confusa de utilizar. Alguna configuración errónea puede hacer que gente equivocada vea información incorrecta, así que hay que ser muy cuidadoso al realizar los test para asegurar que funciona correctamente.

Jen Kramer en su próximo artículo sobre la ACL explicará como configurar los permisos para crear, editar y eliminar contenidos, editar estados, loguearse en el front end y back end, gestionar extensiones y permisos de administración-

Agradecimientos a Brian Teeman, por ayudar en la revisión y edición de este artículo, y por probar el ejemplo para asegurar su funcionamiento.

Escribir un comentario

Por favor procura que tus comentarios estén relacionados con la entrada, comenta con tu nombre y no pongas enlaces en tu comentario. Intenta también respetar a los demás lectores, los comentarios off topic, promocionales, ofensivos o ilegales serán editados y borrados.


Código de seguridad
Refescar