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
19,869 sites
56
drupal.org

Install

Drupal 11, 10 v8.x-3.6
composer require 'drupal/administerusersbyrole:8.x-3.6'
Drupal 9, 8 v8.x-3.4
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
Personas /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
Crear nuevos usuarios

Permite crear nuevas cuentas de usuario en admin/people/create sin requerir el permiso completo 'administer users'.

Acceder a la página de resumen de usuarios

Permite ver la lista de usuarios en admin/people. Solo se mostrarán en la lista los usuarios que el usuario actual puede editar.

Editar usuarios con rol [Nombre del Rol]

Permite editar cualquier usuario autenticado con el rol especificado. Se genera dinámicamente para cada rol en el sistema excepto el rol de administrador. Para editar un usuario con múltiples roles, el sub-administrador debe tener permiso para editar TODOS esos roles.

Cancelar usuarios con rol [Nombre del Rol]

Permite cancelar (eliminar) la cuenta de cualquier usuario autenticado con el rol especificado. Se genera dinámicamente para cada rol en el sistema excepto el rol de administrador. Para cancelar un usuario con múltiples roles, el sub-administrador debe tener permiso para cancelar TODOS esos roles.

Editar usuarios sin roles personalizados

Permite editar cualquier usuario autenticado que no tenga roles personalizados establecidos (solo el rol incorporado 'authenticated user').

Cancelar usuarios sin roles personalizados

Permite cancelar cualquier usuario autenticado que no tenga roles personalizados establecidos (solo el rol incorporado 'authenticated user').

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
El sub-administrador puede ver/editar todos los usuarios a pesar de que los permisos están configurados correctamente

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.

El módulo no funciona después de la actualización

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.

No se puede editar un usuario con múltiples roles a pesar de tener permiso para uno de los roles

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.

Los usuarios administradores no pueden ser objetivo de los sub-administradores

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.

Los enlaces de editar/cancelar usuario no aparecen en Views

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