La gestión de usarios es un aspecto muy importante y al que habitualmente prestamos poca atención. Posiblemente porque desde que instalamos WordPress, contamos con un sistema de roles de usuario y que además, funciona de manera automática. El administrador tiene acceso a todas las funciones y los usuarios registrados ven los contenidos para los que tienen concedido permiso.
Sin embargo, ¿como cambia esta situación si tenemos diferentes colabores y necesitamos varios tipos de usuario? Por suerte llevar a cabo esta tarea en WordPress es sencillo, como veremos a continuación.
Roles de usuario en WordPress
En WordPress se emplea el término capacidad para definir las acciones que puede realizar un usuario. Algunas capacidades dependen del contexto, es decir relacionan al usuario con la página o entrada visualizada. Otras , por el contrario, son independientes de la página activa.
Un rol agrupa diferentes capacidades, y al asignárselo a un usuario le permitimos realizar todas las tareas, sin necesidad de ir una por una.
WordPress viene por defecto con 5 roles de usuarios, a saber:
- Suscriptor: Sólo puede leer los contenidos. Se diferencia de un visitante no registrado en que puede acceder a parte del contenido privado de nuestro sitio.
- Colaborador :Puede crear y modificar borradores de entradas que nosotros decidiremos si son publicadas o no. Nos permite ofrecer al usuario la posibilidad de participar como escritor invitado.
- Autor: Puede publicar, editar y borrar sus propias entradas. Este rol incluye la capacidad de subir archivos.
- Editor: Tiene las capacidades de un autor y también puede editar y borrar las entradas de otros autores. También puede administrar etiquetas, categorías y comentarios. Su papel equivale al de un "moderador" o "jefe de redacción".
- Administrador: Puede hacer todo lo relacionado con la administración de la web: Actualizar WordPress, instalar, editar,modificar e incluso eliminar temas y plugins, y desde luego añadir, editar o eliminar usuarios. Y desde luego, también tiene las capacidades de un editor
La regla básica es conceder al usuarios el nivel de permisos mínimo, suficiente para las tareas que debe desempeñar. Si tenemos un colaborador que redactará sus propios artículos no necesitamos ni debemos darle acceso de administrador. Es posible que, incluso actuando de buena fe, cometa un error que provoque un fallo catastrófico.
En el Codex de WordPress encontraremos información más detallada sobre Roles y Capacidades.
Extendiendo el sistema de Roles de usuario
Aunque el sistema de roles de usuario es suficiente en la mayoría de los casos, hay muchas situaciones en las que como administradores necesitamos un control más granular de las capacidades de los usuarios.
Por ejemplo, podemos necesitar administradores sin acceso a la generación de contenidos o en un sitio de membresía establecer diferentes niveles de acceso. En este último caso lo habitual es que sea el propio plugin quien se encargue de realizar estas funciones por nosotros.
Plugin - User roles and capabilities
Si dudas la opción más simple para adaptar los roles de usuario a nuestras necesidades es el plugin User Roles and Capabilities que podemos descargar desde el repositorio de WordPress.
No requiere configuración, es gratuito y tenemos todas las opciones en una pantalla
Tenemos una tabla con los roles y capacidades disponibles en nuestra instalación. Solo tnenemos que marcar o desmarcar según nos convenga para personalizar los roles existentes. Podemos crear nuevos roles a medida y eliminar los roles creados por el plugin.
Podríamos crear nuevas capacidades, aunque en este caso tendremos que ocuparnos de programar las funciones correspondientes. Esto ya queda fuera del alcance del plugin.
El plugin permite modificar las capacidades de un usuario concreto. Si accedemos al enlace que crea en la lista de tendremos una ventana donde podremos activar o desactivar cualquier capacidad, solo para ese usuario.
Como punto final el plugin no permite modificar el rol Administrador. Es una medida razonable que nos protege de errores catastróficos.
Plugin Ultimate Member
Como la mayoría de plugins de su clase Ultimate Member nos permite, entre otras cosas, gestionar los roles de usuario en nuestra instalación. Por un lado podemos personalizar los roles existentes para incorporar las capacidades asociadas a Ultimate Member.
Tambien podemos crear roles nuevos totalmente adaptados a nuestras necesidades
Simplemente activaremos las capacidades necesarias para nuestro nuevo rol personalizado. Es un proceso sencillo con todas sus opciones perfectamente documentadas, pero, User roles and capabilities organiza mejor las capacidades de WordPress.
Una opción muy interesante de Ultimate Member es que podemos bloquear el acceso al panel de administración. De esta forma los usuarios "normales" no acceden al back-end de nuestro sitio, lo cual añade una capa extra de seguridad a nuestra instalación.
El plugin también permite eliminar los roles creados con Ultimate Member.
Toolset Types Access
Es un plugin de pago al que tendremos acceso si disfrutamos de una licencia de WPML o Toolset Types.
Lo incluyo porque, si activamos la Gestión Avanzada de Roles, nos permite eliminar cualquier rol existente y no solo los creados por el plugin. Es el único probado por mí que lo permite.
También nos permite crear roles específicos para diferentes tipos de contenido y/o idiomas en nuestra instalación. No es que sean necesidades muy frecuentes, pero ahí están.
Desarrollo propio
No podemos descartar esta opción. Si necesitamos ampliar el sistema nativo de roles de usuarios es muy probable que tengamos que programar alguna capacidad nueva o ampliar las existentes. Por otra parte, a veces podemos solucionarlo con un par de líneas de código sin necesidad de instalar complementos adicionales.
Por ejemplo, hemos visto que la mayoría de plugins solo permite eliminar los roles creados por ellos. Tiene sentido como medida de protección, pero si el plugin responsable no se encarga de hacerlo teminaremos con una larga lista de roles. En mi caso fueron 21 (Woocommerce, LearnPress y algun que otro plugin de soporte online son los responsables). No caí en la cuenta hasta que decidí optimizar la base de datos
La función para eliminar un rol es remove_role( 'rol-a-eliminar' ). Le pasamos como argumento el slug del rol que ya no necesitamos. Una sola línea de código en nuestro functions.php, solo necesitamos saber el slug apropiado.
Una solución es usar el inspector de objetos del navegador en la pantalla de edición de usuarios, aunque get_editable_roles() nos servirá tambien.
Al final he optado por crear un pequeño plugin que combina ambas funciones y nos añade una entrada en el menú Herramientas para realizar esta tarea. Podemos descargar el plugin aquí, aunque recomiendo echarle una ojeada a la guía para crear un plugin. Como veremos, se trata de un proceso más simple de lo que parece y que nos abrirá la puerta a un nuevo mundo de posibilidades.
Conclusión
Hemos visto la importancia de gestionar correctamente los permisos de nuestros usuarios y varias herramientas que nos permiten realizar esta tarea de una forma efectiva.
La regla de seguridad básica es no otorgar más permisos de los estrictamente necesarios y desde luego no usar más roles de los necesarios.
¿Qué opinas? ¿Tienes más roles en tu instalación de los que pensabas? Tus cometarios y opiniones son bienvenidos.