Group
Un módulo potente que permite agrupar usuarios, contenido y otras entidades con permisos detallados y control de acceso dentro de cada grupo.
group
Install
composer require 'drupal/group:^3.3'
Overview
El módulo Group proporciona un sistema flexible para crear colecciones de usuarios, contenido y otras entidades. A diferencia de Organic Groups (OG), Group adopta un enfoque fundamentalmente diferente al crear un tipo de Entity "Group" dedicado que sirve como contenedor para contenido relacionado y miembros.
Cada grupo puede tener su propio conjunto de roles y permisos, permitiendo un control de acceso sofisticado que opera independientemente de los permisos globales de Drupal. Los usuarios pueden ser miembros de múltiples grupos con diferentes roles en cada uno, y el contenido puede asociarse con uno o más grupos dependiendo de la configuración.
El módulo utiliza una arquitectura basada en plugins llamada "Group Relations" que determina cómo diferentes tipos de Entity pueden añadirse a los grupos. Este sistema extensible permite a los desarrolladores crear integraciones personalizadas con cualquier tipo de Entity. El módulo incluye un plugin de Group Membership integrado para usuarios y proporciona el submódulo Group Node para la integración con Node.
Las características principales incluyen: múltiples tipos de grupo con configuraciones únicas, alcances de roles flexibles (Outsider, Insider, Individual), membresía automática para creadores de grupos, cardinalidad configurable para relaciones de entidades, soporte de revisiones para grupos e integración completa con Views.
Features
- Tipo de Entity Group personalizado con tipos de grupo (bundles) configurables que soportan Fields, modos de visualización y revisiones
- Sistema de roles de grupo flexible con tres alcances: Outsider (no miembros sincronizados con roles globales), Insider (miembros sincronizados con roles globales) e Individual (asignado manualmente a miembros específicos)
- Sistema de permisos detallado que opera independientemente de los permisos globales de Drupal, con permisos asignables por tipo de grupo y rol
- Sistema de Group Membership que rastrea usuarios como miembros del grupo con soporte para múltiples roles por membresía
- Arquitectura de Group Relations basada en plugins que permite añadir cualquier tipo de Entity a grupos con cardinalidad y control de acceso configurables
- Control de acceso a entidades para contenido agrupado - los grupos pueden determinar quién puede ver, editar y eliminar entidades asociadas
- Integración con Views incorporada con plugins de acceso personalizados, argumentos y manejadores de relaciones para construir visualizaciones conscientes de grupos
- Block de operaciones de grupo que muestra acciones contextuales disponibles para el usuario actual en un grupo específico
- Asistente de creación para añadir nuevas entidades a grupos, asegurando que los Fields de relación se completen correctamente
- Membresía automática del creador del grupo con roles configurables asignados a los creadores
- Contextos y etiquetas de caché para el almacenamiento en caché adecuado de contenido dependiente de permisos de grupo
- Soporte de Token para grupos y relaciones de grupo
- Integración con Pathauto para alias de URL automáticos (opcional)
Use Cases
Departamentos de Intranet Privada
Crea tipos de grupo para departamentos de empresa donde cada departamento es un grupo. Los jefes de departamento obtienen roles de administrador mientras que los empleados regulares son miembros. El contenido añadido a los departamentos solo es visible para los miembros del departamento. Los roles de Outsider sincronizados con el administrador global pueden gestionar todos los departamentos.
Clases de Aprendizaje en Línea
Plataforma educativa donde cada curso es un grupo. Los instructores crean grupos y reciben automáticamente privilegios de administrador. Los estudiantes se unen o son añadidos como miembros. Los materiales del curso (nodes) se añaden al grupo y solo son visibles para los estudiantes inscritos. Diferentes tipos de contenido pueden tener diferentes reglas de permisos.
Grupos de Interés Comunitario
Plataforma social con grupos de interés creados por usuarios. Los usuarios pueden crear grupos sobre cualquier tema y convertirse en el administrador del grupo. Otros usuarios se unen a los grupos que les interesan. Los administradores de grupo controlan la membresía y pueden asignar roles de moderador. El contenido se comparte dentro de la comunidad del grupo.
Portales de Clientes
Sitio web de agencia donde cada cliente tiene un grupo dedicado. Los contactos del cliente se añaden como miembros con acceso de solo lectura. El personal de la agencia tiene roles sincronizados con sus roles globales, dándoles acceso automático a todos los grupos de clientes. Los documentos específicos del cliente y las actualizaciones del proyecto se organizan dentro de cada grupo.
Aplicación Multi-tenant
Aplicación SaaS donde cada tenant/organización es un grupo. Los administradores de tenant gestionan sus propios usuarios, contenido y roles sin afectar a otros tenants. Los administradores globales tienen roles de administrador Outsider para gestionar todos los tenants cuando sea necesario.
Tips
- Siempre configura roles de grupo sincronizados para tu rol de administrador global para asegurar que los administradores del sitio puedan gestionar grupos sin necesitar membresías individuales.
- Usa la opción 'Configurar automáticamente roles predeterminados útiles' al crear tipos de grupo para establecer una configuración inicial sensata con roles Anonymous, Outsider y Member.
- El Block Group Operations es la forma recomendada de proporcionar a los usuarios enlaces para unirse/abandonar y otras acciones de grupo - añádelo al diseño de tu página de grupo.
- Para requisitos de permisos complejos, considera usar múltiples roles de grupo con diferentes ámbitos en lugar de intentar manejar todo en un solo rol.
- Al añadir fields a las relaciones de grupo (membresías), habilita el 'asistente de creación' para asegurar que los usuarios completen todos los fields requeridos.
- Usa el permiso 'access content overview' con moderación - muestra datos técnicos de relaciones que son principalmente útiles para depuración o usuarios avanzados.
- Los permisos de grupo son completamente separados de los permisos globales de Drupal - un usuario con 'administer nodes' globalmente aún necesita permisos específicos de grupo para gestionar nodes dentro de un grupo.
- La View group_members en /group/[id]/members puede ser personalizada o reemplazada con tus propias Views manteniendo la misma ruta.
Technical Details
Admin Pages 12
/admin/group/settings
Configura los ajustes globales del módulo Group que afectan a todos los grupos del sitio.
/admin/group
Página de resumen que lista todos los grupos del sitio. Proporciona una interfaz con pestañas para acceder a la lista de grupos, tipos de grupo y configuración del módulo.
/admin/group/types
Lista de todos los tipos de grupo configurados. Cada tipo de grupo actúa como un bundle para la entidad Group con su propia configuración, roles y plugins de contenido disponibles.
/admin/group/types/manage/{group_type}
Configura un tipo de grupo específico incluyendo su etiqueta, descripción, configuración del grupo y configuración del creador.
/admin/group/types/manage/{group_type}/permissions
Configura los permisos para todos los roles dentro de este tipo de grupo. Muestra una matriz de permisos por rol con casillas de verificación para otorgar/revocar permisos.
/admin/group/types/manage/{group_type}/roles
Gestiona los roles de grupo para este tipo de grupo. Los roles pueden estar en tres ámbitos: Externo (para no miembros), Interno (para miembros sincronizados con roles globales) o Individual (asignado manualmente).
/admin/group/types/manage/{group_type}/roles/add
Crea un nuevo rol para un tipo de grupo con ámbito configurable y sincronización opcional con rol global.
/admin/group/types/manage/{group_type}/content
Gestiona qué tipos de entidad pueden añadirse a grupos de este tipo instalando o configurando plugins de Group Relation.
/admin/group/content/install/{group_type}/{plugin_id}
Configura e instala un plugin de Group Relation en un tipo de grupo, habilitando que ese tipo de entidad pueda añadirse a los grupos.
/group/{group}/members
Página impulsada por Views que muestra todos los miembros de un grupo con sus roles, fecha de ingreso y enlaces de operaciones.
/group/{group}/join
Formulario de autoservicio que permite a los usuarios unirse a un grupo si tienen el permiso 'unirse al grupo'.
/group/{group}/leave
Formulario de confirmación que permite a los miembros abandonar un grupo si tienen el permiso 'abandonar grupo'.
Permissions 3
Hooks 1
hook_group_operations_alter
Permite a los módulos alterar los enlaces mostrados en el bloque Group Operations para un grupo específico.
Troubleshooting 6
Por diseño, el usuario 1 de Drupal no tiene automáticamente acceso a grupos. Crea roles de grupo Outsider e Insider sincronizados con tu rol de administrador global y márcalos como roles de administrador. Esto otorga acceso completo a los usuarios con el rol de administrador global.
Edita el tipo de grupo y habilita 'El creador del grupo automáticamente se convierte en miembro'. Luego configura 'Roles del creador del grupo' para asignar uno o más roles (incluyendo un rol de administrador si lo deseas) a los creadores.
Asegúrate de que el plugin Group Relation tenga 'entity_access' habilitado (verifica la anotación/atributo del plugin). Para gnode, esto está habilitado por defecto. También verifica que el usuario tenga los permisos apropiados de ver/actualizar/eliminar para ese tipo de Entity dentro del grupo.
Limpia todas las cachés. Los permisos de grupo usan un sofisticado sistema de caché con el contexto de caché user.group_permissions. Ejecutar 'drush cr' debería resolver la mayoría de los problemas de caché.
Primero, asegúrate de que el plugin Group Relation apropiado esté instalado en el tipo de grupo (Admin > Groups > Group types > [type] > Content). Luego verifica que el usuario tenga el permiso 'create [plugin] relationship' dentro del grupo.
Crea un rol de grupo de ámbito Outsider sincronizado con el rol global 'Anonymous user'. Otorga el permiso 'view group' y cualquier otro permiso necesario a este rol.
Security Notes 6
- El permiso 'administer group' otorga control total sobre toda la configuración de grupos. Solo otórgalo a administradores de plena confianza.
- Los roles de administrador de grupo tienen todos los permisos dentro de ese tipo de grupo, incluyendo la capacidad de gestionar otros miembros. Asígnalos cuidadosamente.
- Por defecto, los creadores de grupos no tienen ningún permiso especial a menos que se configure. Esto es intencional por seguridad - configura explícitamente los roles de creador.
- El control de acceso a Entity (cuando está habilitado) opera además de, no en lugar de, el acceso estándar a Entity de Drupal. Ambos deben permitir el acceso para que un usuario acceda al contenido.
- Los roles Outsider sincronizados con el rol global Anonymous user permiten acceso no autenticado a grupos - configura los permisos en estos roles cuidadosamente.
- Las membresías y roles de grupo se almacenan como content entities y están sujetos a consideraciones de privacidad de datos bajo regulaciones como el RGPD.