Este artículo es una traducción del artículo orginal escrito por Jen Kramer para la Joomla! Community Magazine

Cómo mejorar la experiencia de usuario de tus clientes - a la vez que mejoras la usabilidad - mediante el uso de ACL en el backend de Joomla.

 ACL en el backend de Joomla

En artículos anteriores, he tratado sobre la terminología de ACL y una visión general de cómo funciona ACL, la creación de los niveles de acceso de front-end, y crear una mejor experiencia de usuario al iniciar la sesión. Ahora voy a cubrir cómo crear una mejor experiencia de usuario para tus clientes - a la vez que se mejora la usabilidad - mediante el uso de ACL en el back-end de Joomla.

Para la mayoría de los sitios que he construido, trato de configurar a los clientes para editar su sitio web desde el frontend de Joomla. Por desgracia, las capacidades de edición del frontend de Joomla! son limitadas. No es posible crear fácilmente nuevos artículos o enlazarlos al frontend de la página web, por ejemplo, sin configurar la funcionalidad de blog (y a veces eso no es lo que deseas usar). Por lo tanto, más a menudo de lo que me gustaría, tengo que dar acceso a mi cliente al backend de Joomla para completar tareas sencillas.

Sin embargo, cuando un cliente llega al backend de Joomla, no tarda en dejarse distraer por la funcionalidad que nunca debe tocar. Incluso si das a tu cliente acceso de Manager al backend, aún tendrá opciones de distracción a considerar.

Despojando de funcionalidades al backend de Joomla para incluir sólo a lo que el cliente debe acceder, haces el proceso más sencillo y fácil para tu cliente. Sabrán lo que hace cada opción que se encuentre dentro de la estructura del menú, y sabrán cómo usarlos ... si proporcionas una formación adecuada y documentación.

Denegar hasta Permitir vs. Permitir hasta Denegar

ACL de Joomla! está configurado como un sistema "denegar hasta permitir". El grupo de usuarios Public no tiene permiso para hacer nada más que ver el frontend de la página web. Cada uno de los grupos predeterminados de usuarios tienen permisos añadido y esos permisos son siempre para permitir algo.

Recuerda que Denegar no se puede sobreescribir. Si deniegas a un grupo de usuarios la posibilidad de editar el contenido dentro de una categoría, no se puede reemplazar para un solo artículo dentro de esa categoría. Sin embargo, si el grupo de usuarios ha heredado el permiso "Sin asignar" de Public (lo que significa que no se nos permite hacer algo, pero que ese algo puede ser reemplazado), actualmente no puede editar los artículos dentro de una categoría. A continuación, podrías dar el permiso Permitir a un solo artículo y reemplazar la configuración de la categoría.

Podemos agregar permisos para que un grupo de usuarios realice una tarea determinada en varios niveles. Vamos a considerar agregar el permiso de edición, para que nuestro cliente pueda editar artículos. Hay varios lugares donde el permiso Editar podría ser añadido, con significados asociados.

  • Editar, Configuración global: La mayoría de los grupos de usuario predeterminados de Joomla tienen el permiso Editar asignado en Configuración Global. Sin embargo, cuando el permiso de edición se asigna aquí, significa que el grupo de usuarios tiene permiso para editar cualquier tipo de contenido: no sólo artículos, sino también enlaces web, formularios de contacto, y mucho más. Para desactivar la posibilidad de editar, debes utilizar Denegar. Eso podría significar que necesitarás denegar la posibilidad de editar en muchos lugares en la estructura de Joomla. En general, no recomiendo la edición en el nivel de Configuración Global.
  • Editar, Opciones de Artículos: Agregar el permiso Editar aquí significa que el cliente puede editar los artículos y las categorías en cualquier lugar dentro del contenido. Necesitarías denegar el acceso a categorías o artículos específicos si al cliente no se le permite editar. Recuerda que Denegar no se puede sobreescribir. A menos que tu cliente necesite editar todas partes dentro de la gestión de artículos y categorías, yo no recomendaría configurar la edición aquí tampoco.
  • Editar, categoría individual: El cliente ahora será capaz de editar los artículos dentro de una categoría dada. Esto tiene más sentido y es más fácil de administrar. Puedes denegar la edición en los artículos individuales y no tienes que preocuparte de lo que sucede si necesitas cambiar algo más profundo en la estructura de Joomla más tarde.
  • Editar artículos individuales: puedes establecer permisos en los artículos individuales, pero tardarás mucho tiempo. En general, no se recomienda cambiar los permisos de los artículos a menos que sea absolutamente necesario, porque no hay otra solución. Recuerda que si Denegar se fija en el nivel de la categoría, no puede ser sobreescrito en el nivel de artículo.

En general, deberás seguir una estrategia de Denegar hasta Permitir la hora de configurar el ACL de Joomla. Esto te permitirá la máxima flexibilidad más tarde, para ajustar los permisos en base a artículo por artículo. Si utilizas un sistema Permitir hasta Denegar, no tendrás la flexibilidad de cambiar los permisos más tarde.

El problema que estamos tratando de resolver

Supongamos que quieres dar un acceso muy básico a tu cliente al backend de Joomla:

  • Capacidad para crear, editar y publicar/despublicar artículos dentro de una determinada categoría o categorías (o de todas las categorías)
  • Capacidad para crear, editar y publicar/despublicar elementos de menú
  • Posibilidad de acceder a algunos de los componentes básicos, como el componente de Enlaces Webs

Visión general de la solución

El enfoque general de la configuración será como sigue:

  1. Crear un nuevo grupo de usuarios, asignarle los permisos básicos, y crear un usuario para el cliente.
  2. Asignar el nivel o niveles de acceso correspondiente.
  3. Asignación de permisos para que el cliente puede acceder al Gestor del artículos, Gestor de menús y enlaces web.

Te recomiendo que sigas este ejemplo utilizando dos navegadores web. Yo uso Firefox para mi inicio de sesión de superusuario, y Chrome para mi inicio de sesión de cliente, pero puedes utilizar cualquier combinación de navegadores que Joomla soporta. De esta manera puedo cambiar entre puntos de vista, ajustando la información a medida que avanzo. Si utilizas un navegador, tendrá que salir y entrar a ver a las diferentes vistas - Joomla no le permitirá tener dos inicios de sesión compartidos desde un navegador.

1. Creación de un nuevo grupo de usuarios, asignarle permisos básicos, crear un usuario

He cubierto este proceso en detalle en otros artículos. En pocas palabras, haga lo siguiente:

  • Crea un nuevo grupo de usuarios llamado Grupo de Usuarios Clientes. Hágalo hijo de Public.
  • En la Configuración Global, en Permisos, establece el permiso Acceso a la administración a Permitir. (Si el cliente también debe iniciar su sesión en el frontend, debes establecer el permiso de Acceso al sitio en Permitir. Ajuste los demás permisos en consecuencia, dependiendo de lo que el cliente necesite hacer.)
  • Crea un usuario cliente, y asignar este usuario al grupo de usuarios Clientes. Asegúrate de recordar el nombre de usuario y contraseña

2. Asignar niveles de acceso

Si inicias sesión en Joomla como cliente en este punto, verás una pantalla similar a esta:

Esto no es muy útil. Fuiste capaz de iniciar la sesión, pero ¿dónde está el menú? ¿Dónde está el panel de control? ¿Qué se puede hacer aquí, aparte de cerrar la sesión?

Una cosa que aún no has configurado es un nivel de acceso para el backend de la página web. Recuerda que los niveles de acceso controlan quién ve qué, incluyendo los módulos, el contenido, y así sucesivamente. Los menús son un módulo, incluso en el backend de Joomla. Son un módulo de administrador, y estos módulos de administrador se les asigna un nivel de acceso especial. Por lo tanto, el cliente también tendrá que tener el nivel de acceso especial asignado a su grupo de usuarios.

Debido a que se requiere Special para que el ACL del backend funcione, te aconsejo que no uses Special como un nivel de acceso en el frontend de Joomla.

Ahora haz lo siguiente:

  • Como super usuario, asigna el nivel de acceso Special al Grupo de usuairos Clientes Usuario. (Ver este artículo si necesitas ayuda.)
  • Cierra sesión como el cliente, y luego volver a iniciar sesión. (Debido al cambio de nivel de acceso, tendrás que salir y entrar de nuevo para ver una interfaz de administrador cambiada.)

Deberías ver algo como esto ahora, como cliente:

Esto es lo que el cliente puede hacer en backend en este punto:

  • Editar su propio perfil de usuario, incluyendo nombre de usuario y contraseña por sí mismos (pero como no es super usuario, no será capaz de cambiar su grupo de usuario).
  • Ver enlaces a la Ayuda, los cuales son páginas web disponibles públicamente.
  • Cerrar sesión, o ver el frontend de la página web.
  • Ver una lista de los 5 artículos más populares y los últimos 5 artículos añadidos a través de los módulos de la derecha, pero no puede modificar cualquiera de esos artículos.

Todavía no es demasiado útil, pero al menos no está absolutamente vacío. Nuestro próximo paso es dar permiso al cliente para crear, editar y cambiar el estado de los artículos.

3a. Asignar permisos: Artículos

El cliente debe ser capaz de acceder al Gestor del artículos en el backend de Joomla. El primer paso es hacer que el cliente tenga el Gestor de artículos como una opción en el menú. Una vez que la opción es visible, podemos centrarnos en la asignación de permisos más específicos.

Consiguiendo que el Gestor de artículos aparezca en el backend del cliente

Para conseguir que el Gestor de artículos aparezca como una opción en el menú, ve a Contenido - Gestor de artículos - Opciones, selecciona la ficha Permisos, y establece "Acceso a la interfaz de administración" a Permitir para el Grupo de Usuario Clientes. Haz clic en Guardar en la esquina superior derecha.

(Puedes estar pensando acerca de la opción Configurar. Este es el permiso que te permite acceder al cuadro de diálogo Opciones. En general, sólo desearás que los superusuarios tengan acceso a esto.)

Ahora ve al navegador web del cliente, refresca la pantalla, y deberías ver el Gestor de artículos y el Gestor de categorías como iconos en el panel de control, así como en el menú superior.

Por desgracia, no es posible separar los permisos para el Gestor de artículos y el Gestor de Categorías en este momento. Esta es una debilidad importante en la ACL de Joomla.

Si nos fijamos en el Gestor de artículos como cliente, serás capaz de ver una lista completa de todos los artículos. Sin embargo, no puedes modificar ninguno de ellos, ni puedes cambiar su estado. No hay un botón para crear un nuevo artículo en la parte superior derecha - sólo hay un icono para obtener ayuda.

Editar todos los artículos vs. Editar categorías de artículos

El siguiente paso es dar el permiso al cliente para editar y cambiar el estado de estos artículos. ¿Quieres darle al cliente la posibilidad de cambiar todos los artículos de esta manera, o quieres dar el permiso en categorías específicas, o necesitas dar permiso a artículo por artículo?

La respuesta es que depende. Cuando configuras tu estructura de categoría para el sitio, te recomiendo lo siguiente:

  • Mantén ACL en cuenta al establecer las categorías de contenido. Si necesitas bloquear al cliente en algunas de las páginas del sitio, puedes poner todas esas páginas en la misma categoría, aunque su contenido sea muy diferente. Esto hará más fácil de configurar ACL.
  • Del mismo modo, si el cliente sólo edita un cierto subconjunto de artículos, podría tener sentido ponerlos a todos en la misma categoría.
  • Cambiar los permisos artículo por artículo debe ser sólo para los casos más raros. Es difícil enseñar a tu cliente a configurar los permisos de nuevos artículos. Establece los permisos en la categoría, y el cliente no tendrá que tocarlos al crear nuevos artículos.

Para cada escenario, así es como se podría proceder.

El cliente debe modificar todos los artículos

Si el cliente debe modificar todos los artículos, configura los permisos de la siguiente manera:

En Contenido - Gestor de artículos - Opciones - Permisos, para el Grupo de Usuarios Clientes, establece Crear, Editar, Editar Estado, y Editar propios a Permitido. En general, no doy a los clientes el permiso para eliminar el contenido, ya que esto significa que sería capaz de vaciar la papelera. Pueden despublicar o eliminar cualquier artículo con el permiso de Editar estado.

El cliente debe modificar artículos de una categoría o categorías

Si el cliente sólo editará los artículos dentro de una categoría o un pequeño número de categorías, configura cada categoría de la siguiente manera:

  • Aún deberás permitir el "Acceso a la interfaz de administración" en Contenido - Gestor de artículos - Opciones - Permisos.
  • En Contenido - Gestor de categorías, haz clic en el nombre de la categoría donde el cliente editará. En la parte inferior de la pantalla de configuración para cada categoría hay un conjunto de permisos. Establece los permisos para permitir crear, editar, editar Estado, y editar propios.
  • Repite este proceso para cada categoría de artículos donde el cliente necesita acceso.

El cliente necesita acceder a artículo por artículo

También puedes editar un artículo individual como superusuario, desplázatee hasta la parte inferior de la pantalla, y establece los permisos para el cliente. Esto sólo debe utilizarse en las circunstancias más raras. Configurar los permisos en el nivel de la categoría es un mejor enfoque desde una perspectiva de mantenimiento.

He permitido a mi cliente crear, editar y cambiar el estado de cualquier artículo en el sitio web. El panel de control de Joomla para el cliente ahora se ve así:

3b. Asignar permisos: Gestor multimedia

Como cliente, si editas cualquier artículo, una de las tareas que sin duda necesitarás llevar a cabo es la posibilidad de añadir una imagen al artículo.

En La forma en que los permisos están asignados, el cliente es capaz de llegar a los artículos, haciendo clic en el título para llegar a la pantalla de edición, para luego hacer clic en el botón Imagen en la parte inferior de la ventana de edición de artículos. Se mostrará la pantalla del Gestor multimedia que se parece a esta:

Nota que el cliente es capaz de buscar cualquier imagen que ya está en el Gestor multimedia, pero no hay ninguna interfaz para cargar una nueva imagen al sitio. Eso es porque el Gestor multimedia es un componente independiente del gestor de artículos, y por eso, tiene su propio conjunto de permisos. Es más, el Gestor multimedia no aparece en la estructura del menú del backend de Joomla cuando se conecta el cliente.

Para cambiar esto, inicia sesión como super usuario, ve a Contenido - Gestor multimedia - Opciones - Permisos, configuraa "Acceso a la interfaz de administración" a Permitido.

3c. Asignar permisos: Menú

A estas alturas, debes tener una idea bastante buena de lo que viene. Si el cliente necesita vincular los artículos al menú, necesitará acceso a la opción de menú Menús en el backend de Joomla.

Como super usuario, ve a Menús - Gestor de Menús - Opciones - Permisos, y para el grupo de usuarios de Clientes, establece Acceso a la interfaz de administración, Crear, Editar y Editar estado a Permitido.

Por desgracia, no puedes permitir al cliente añadir elementos del menú como hijos de un elemento de menú determinado, o permitirles crear sólo determinados tipos de elementos de menú. Eso sería una gran adición a ACL de Joomla.

3d. Asignar permisos: Componente Enlaces webs

Esta es la forma en que mi cliente ve ahora el backend:

Ahora quiero dar al cliente acceso a Enlaces web, pero no a otros componentes dentro de Joomla. Afortunadamente, eso es fácil de hacer, y probablemente puedas adivinar como hacerlo en este punto.

Como superusuario, ve a Componentes - Enlaces web - Opciones - Permisos y para el Grupo de usuario Clientes, configura Acceso a la interfaz de administración, Crear, Editar, Editar estado y Editar propios a Permitido.

Puedes repetir este proceso para cualquiera de los componentes principales de Joomla! para los que te gustaría que el cliente tenga acceso.

Nota: algunos componentes de terceros pueden no tener el sistema ACL de Joomla totalmente integrado. Si ACL es importante para tu sitio, asegúrate de considerar esto al elegir el componente correcto para tu sitio web.