Administrar Usuarios por Rol
Permite a los constructores de sitios configurar permisos detallados para que usuarios sub-administradores puedan editar, cancelar y crear otros usuarios según sus roles, proporcionando un control más específico que el permiso de todo o nada 'administer users' de Drupal Core.
administerusersbyrole
Install
composer require 'drupal/administerusersbyrole:8.x-3.6'
composer require 'drupal/administerusersbyrole:8.x-3.4'
Overview
El módulo Administer Users by Role permite a los administradores del sitio delegar tareas de gestión de usuarios a roles específicos sin otorgar el permiso completo 'administer users'. Esto es particularmente útil para sitios con múltiples niveles de administradores donde ciertos usuarios necesitan gestionar grupos específicos de usuarios sin tener acceso administrativo completo.
El módulo genera automáticamente permisos específicos por rol para editar y cancelar usuarios. Para cada rol en tu sistema, se crean permisos que permiten editar y cancelar usuarios con ese rol. Para editar o cancelar un usuario con múltiples roles, un sub-administrador debe tener permiso para gestionar TODOS esos roles. El módulo excluye intencionalmente el rol de administrador como objetivo, ya que permitir que alguien edite a un administrador anularía el propósito de seguridad del módulo.
Este es un módulo para Drupal 7 que depende del módulo Chain Menu Access API para el encadenamiento adecuado de acceso a menús.
Features
- Permisos detallados basados en roles para editar usuarios - los permisos se generan dinámicamente para cada rol en el sistema
- Permisos detallados basados en roles para cancelar (eliminar) cuentas de usuario
- Permiso separado para crear nuevas cuentas de usuario sin acceso completo de administrador
- Control de acceso para la página de resumen de usuarios (admin/people) mostrando solo usuarios que pueden ser editados
- Exclusión automática del rol de administrador de los objetivos de permisos por seguridad
- Soporte para usuarios con múltiples roles - los sub-administradores deben tener permiso para TODOS los roles que tiene el usuario objetivo
- Integración con el módulo Views a través de manejadores de campo personalizados para enlaces de editar y cancelar
- Compatibilidad con el módulo admin_views para vistas filtradas de administración de usuarios
- Compatibilidad con el módulo password_policy_password_tab para acceso a gestión de contraseñas
- Integración con Entity API para manejo adecuado de callbacks de acceso
- Sistema de etiquetado de consultas para filtrar usuarios basándose en permisos de edición en vistas personalizadas
Use Cases
Administradores de Usuarios Departamentales
En una organización grande con múltiples departamentos, puedes crear sub-administradores basados en roles que solo pueden gestionar usuarios dentro de su departamento. Por ejemplo, crea un rol 'Marketing' y un rol 'Administrador de Marketing'. Otorga al 'Administrador de Marketing' los permisos para editar y cancelar usuarios con el rol 'Marketing'. Los administradores de marketing pueden entonces gestionar usuarios de marketing sin acceso a usuarios de otros departamentos.
Gestión de Sitio de Membresía
Para un sitio de membresía con múltiples niveles (Básico, Premium, VIP), puedes permitir que el personal de servicio al cliente gestione miembros Básicos y Premium pero restringir la gestión de miembros VIP solo al personal senior. Crea roles apropiados y otorga permisos en consecuencia.
Delegación de Registro de Usuarios
Permite que editores de contenido o moderadores creen nuevas cuentas de usuario sin darles acceso administrativo completo. Otorga solo el permiso 'Crear nuevos usuarios' a estos roles.
Administración Jerárquica
Implementa un sistema de administración por niveles donde los administradores senior pueden gestionar todos los tipos de usuarios mientras que los administradores junior solo pueden gestionar grupos específicos de usuarios. Esto previene que los administradores junior modifiquen accidentalmente cuentas de usuarios con mayores privilegios.
Portal de Autoservicio
Combinado con una asignación de roles adecuada, permite que los líderes de equipo editen miembros de su equipo (usuarios con el rol de su equipo) sin exponer información de otros usuarios.
Tips
- Siempre prueba las configuraciones de permisos con cuentas de prueba antes de desplegar a producción
- Recuerda que 'editar usuarios sin roles personalizados' solo aplica a usuarios que NO tienen roles personalizados - usuarios con cualquier rol requieren el permiso de rol específico
- Usa la etiqueta de consulta 'administerusersbyrole_edit_access' en Views personalizadas para filtrar automáticamente usuarios según los permisos de edición
- El módulo funciona bien con Views para crear interfaces de administración de usuarios específicas por rol
- Considera crear una jerarquía de roles clara para simplificar la gestión de permisos
- Documenta tu estructura de permisos ya que puede volverse compleja con muchos roles
Technical Details
Admin Pages 1
/admin/people
Página de resumen de administración de usuarios. Cuando es accedida por usuarios con permiso 'access users overview' (en lugar de 'administer users'), solo muestra usuarios que el usuario actual tiene permiso para editar según sus permisos específicos de rol.
Permissions 6
Hooks 5
hook_permission
Genera dinámicamente permisos para editar y cancelar usuarios basándose en todos los roles disponibles en el sistema.
hook_menu_alter
Encadena callbacks de acceso para elementos de menú relacionados con usuarios para implementar la lógica de control de acceso del módulo.
hook_query_alter
Altera consultas etiquetadas con 'administerusersbyrole_edit_access' para filtrar usuarios que el usuario actual no puede editar.
hook_entity_info_alter
Reemplaza el callback de acceso de la entidad usuario para integrarse con el módulo Entity API.
hook_views_data_alter
Reemplaza los manejadores de campo de Views para enlaces de editar y cancelar usuarios para respetar los permisos de este módulo.
Troubleshooting 5
Asegúrate de que el rol de sub-administrador NO tenga el permiso básico 'administer users'. Este permiso omite todos los permisos de Administer Users by Role.
Asegúrate de que el módulo Chain Menu Access API esté instalado y habilitado. Ejecuta las actualizaciones de base de datos (update.php o drush updatedb) para completar la migración a la versión 2.x.
Esto es por diseño. Para editar un usuario con múltiples roles, debes tener permiso para editar TODOS sus roles. Otorga permisos adicionales de edición específicos por rol según sea necesario.
Este es un comportamiento de seguridad intencional. Los usuarios con el rol de administrador del sitio están excluidos de ser editados/cancelados por sub-administradores para prevenir escalada de privilegios.
El módulo proporciona manejadores de campo personalizados de Views. Asegúrate de estar usando los manejadores de campo correctos y de que la integración con Views del módulo esté cargada (limpia las cachés si es necesario).
Security Notes 5
- El rol de administrador está intencionalmente excluido de ser objetivo de los permisos de este módulo - esto previene escalada de privilegios donde un sub-administrador podría modificar la contraseña de un administrador y obtener acceso completo
- El permiso básico 'administer users' siempre sobrescribe los permisos de este módulo - nunca lo otorgues a roles de sub-administrador
- Los usuarios no pueden cancelar su propia cuenta a través del formulario de operaciones masivas cuando tienen permiso de cancelación - el formulario omite las restricciones normales de auto-cancelación
- Al otorgar permisos de cancelación, recuerda que cancelar un usuario puede eliminar su contenido dependiendo de la configuración del sitio
- El módulo previene la edición del usuario ID 1 (el administrador raíz) independientemente de los permisos