Organic Groups

Proporciona una API flexible para crear y gestionar grupos con miembros, roles, permisos y asociaciones de contenido de grupo.

og
9,487 sites
71
drupal.org

Overview

El módulo Organic Groups (OG) brinda a los usuarios la capacidad de crear, gestionar y eliminar sus propios 'grupos' en un sitio. Cada grupo puede tener miembros y mantiene una página de inicio del grupo donde los miembros individuales pueden publicar contenido. Las publicaciones pueden enviarse a múltiples grupos (publicación cruzada), y el contenido individual del grupo puede compartirse con miembros o no miembros según sea necesario.

La membresía del grupo puede ser abierta, cerrada o moderada. El módulo aprovecha la Field API de Drupal para asociar tipos de contenido con grupos, lo que significa que cualquier tipo de Entity puede convertirse en grupo o contenido de grupo adjuntando los campos OG apropiados. Los usuarios pueden seleccionar con qué grupos asociar su contenido desde una lista de grupos que tienen autorización para ver.

OG proporciona un sistema completo de roles y permisos a nivel de grupo, permitiendo asignar diferentes permisos a diferentes roles dentro del contexto de cada grupo. Esto permite que los administradores de grupo tengan control granular sobre sus propios grupos mientras los administradores del sitio mantienen supervisión de todos los grupos.

Features

  • Definir cualquier tipo/bundle de Entity como grupo a través de la UI de administración o programáticamente
  • Asociar contenido con grupos usando campos de referencia de Entity con manejadores de selección OG
  • Entity OgMembership con campos que conecta usuarios a grupos con estado (activo/pendiente/bloqueado), roles y metadatos
  • Sistema de roles y permisos a nivel de grupo independiente de los roles del núcleo de Drupal
  • Tres estados de membresía: activo (miembro pleno), pendiente (esperando aprobación) y bloqueado (acceso denegado)
  • Soporte para múltiples tipos de membresía para diferentes niveles (ej., predeterminado, premium)
  • Membresía automática del creador del grupo con acceso completo configurable para el administrador del grupo
  • Funcionalidad de suscripción/cancelación con flujo de aprobación opcional para grupos privados
  • Manejo de contenido de grupo huérfano cuando se eliminan grupos (métodos simple, por lotes o cron)
  • Permisos estrictos de acceso a Node que respetan la membresía del grupo para operaciones CRUD
  • Resolución de contexto de grupo desde rutas, argumentos de consulta y acceso de usuario
  • Integración con Views con relaciones de grupo a contenido y de contenido a grupo
  • Acciones masivas para gestión de membresías (aprobar, bloquear, desbloquear, eliminar, agregar/quitar roles)
  • Arquitectura basada en eventos para extender permisos, roles y rutas de administración
  • Contextos de caché para contexto de grupo, estado de membresía, permisos y roles

Use Cases

Grupos Comunitarios

Crea un sitio comunitario donde los usuarios pueden crear y gestionar sus propios grupos. Cada grupo tiene sus propios miembros, contenido y administradores. Los creadores de grupos se convierten automáticamente en administradores con control total sobre la membresía y permisos de su grupo.

Gestión de Proyectos

Configura grupos basados en proyectos donde los miembros del equipo colaboran en tareas y documentos. Diferentes tipos de membresía (desarrollador, gerente, visualizador) proporcionan distintos niveles de acceso. Usa el estado de membresía pendiente para nuevos miembros del equipo que requieren aprobación del gerente.

Cursos Educativos

Crea grupos de cursos donde los instructores gestionan a los estudiantes. El contenido del curso solo es visible para los estudiantes inscritos. Los instructores tienen acceso administrativo completo mientras que los estudiantes pueden ver y enviar tareas dentro de sus grupos de curso.

Espacios de Trabajo Privados

Implementa espacios de trabajo privados donde la suscripción requiere aprobación. Habilita la configuración 'deny_subscribe_without_approval' y otorga solo el permiso 'subscribe' a los no miembros. Los administradores aprueban las solicitudes de membresía para mantener la privacidad del grupo.

Plataforma Multi-inquilino

Construye una plataforma multi-inquilino donde cada inquilino es un grupo con contenido y usuarios aislados. Usa control de acceso estricto a Node para asegurar que los editores de contenido solo modifiquen contenido dentro de sus grupos de inquilino.

Niveles de Membresía

Implementa membresías escalonadas usando múltiples tipos de membresía. Crea tipos de membresía 'default' y 'premium' con diferentes campos y lógica de expiración. Los miembros premium reciben roles y permisos adicionales dentro de los grupos.

Tips

  • Usa el método Og::createField() para añadir programáticamente campos de OG a los bundles de Entity durante la instalación del módulo.
  • Suscríbete al evento og.permission para añadir permisos personalizados a nivel de grupo para las características de tu módulo.
  • Usa cache contexts (og_group_context, og_membership_state, og_permissions, og_role) al renderizar contenido dependiente del grupo.
  • La Entity OgMembership es fieldable - añade campos personalizados a los tipos de membresía para almacenar datos específicos del miembro como razón de unión o fecha de expiración.
  • Usa relaciones de Views (og_group_to_group_content) en lugar de consultar directamente los campos de audiencia para listar contenido del grupo.
  • Para grupos privados, combina la configuración 'deny_subscribe_without_approval' con una configuración cuidadosa de permisos para asegurar que las solicitudes de membresía requieran aprobación.
  • Los administradores de grupo reciben permisos completos cuando 'group_manager_full_access' está habilitado - considera desactivar esto para sitios donde la transferencia de propiedad es común.
  • Usa el método de eliminación de huérfanos por lotes o cron para sitios con grandes cantidades de contenido de grupo para prevenir problemas de tiempo de espera.
  • El elemento og_autocomplete proporciona referencias de Entity conscientes del contexto del grupo - úsalo al construir formularios personalizados que referencian contenido del grupo.

Technical Details

Admin Pages 11
Organic groups /admin/config/group

Página principal de administración del módulo Organic Groups que proporciona acceso a la configuración de ajustes, roles y permisos.

Ajustes de OG /admin/config/group/settings

Configura los ajustes globales del comportamiento de Organic Groups, incluyendo la gestión de membresías, el control de acceso y la gestión de contenido huérfano.

Resumen de roles de OG /admin/config/group/roles

Página de resumen que lista todos los tipos de grupo con enlaces para gestionar los roles de cada bundle de grupo.

Roles de OG para [bundle] /admin/config/group/roles/{entity_type_id}/{bundle_id}

Gestiona los roles de OG para un tipo de grupo específico. Los roles pueden reordenarse arrastrando y tienen operaciones para editar, eliminar y permisos.

Añadir rol /admin/config/group/roles/{entity_type_id}/{bundle_id}/add

Crea un nuevo rol de OG para el tipo de grupo especificado.

Resumen de permisos de OG /admin/config/group/permissions

Página de resumen que lista todos los tipos de grupo con enlaces para gestionar los permisos de cada bundle de grupo.

Permisos de [Bundle] /admin/config/group/permissions/{entity_type_id}/{bundle_id}

Configura los permisos para cada rol dentro de un tipo de grupo. Los permisos están organizados por proveedor (Grupo, Contenido de grupo) y se muestran en formato de matriz.

Tipos de membresía /admin/structure/membership-types

Gestiona los bundles de tipos de membresía de OG. Los tipos de membresía permiten diferentes configuraciones de membresía (por ejemplo, predeterminada, premium) con campos personalizados.

Añadir tipo de membresía /admin/structure/membership-types/add

Crea un nuevo bundle de tipo de membresía para las membresías de OG.

Miembros /group/{entity_type_id}/{group}/admin/members

Visualiza y gestiona los miembros del grupo a través de una interfaz basada en Views con operaciones masivas para la gestión de membresías.

Añadir miembro /group/{entity_type_id}/{group}/admin/members/add/{og_membership_type}

Añade un nuevo miembro al grupo seleccionando un usuario y asignando roles.

Permissions 1
Administrar Organic groups

Administrar todos los grupos y permisos. Este es un permiso a nivel de sitio que otorga acceso completo a toda la administración de OG.

Hooks 1
hook_og_user_access_alter

Permite a los módulos alterar los permisos a nivel de grupo para un usuario. Puede usarse para otorgar o revocar permisos dinámicamente basándose en lógica personalizada.

Troubleshooting 6
Los usuarios no pueden ver el enlace de suscripción en los grupos

Asegúrate de que el módulo OG UI esté habilitado, que el permiso 'Subscribe user to group' esté otorgado a los roles apropiados en admin/config/group/permissions, y que el formateador 'Group subscription' esté seleccionado para el campo Group type en la configuración de Manage Display del tipo de contenido.

El contenido del grupo no está asociado con los grupos

Verifica que el tipo de contenido esté configurado como 'Group content' en su pestaña Organic groups. Comprueba que el campo og_group_ref existe y que el usuario tiene permiso para publicar en los grupos de destino.

Los usuarios con permisos globales de edición no pueden editar el contenido del grupo

Este es el comportamiento esperado cuando 'Strict node access permissions' está habilitado. Desactiva esta configuración en admin/config/group/settings, añade al usuario al grupo, u otórgale el permiso 'administer organic groups'.

El contenido huérfano permanece después de eliminar un grupo

Habilita 'Delete orphans' en la configuración de OG en admin/config/group/settings. Elige el método de eliminación apropiado (simple para inmediato, cron para procesamiento en segundo plano). Para el método cron, asegúrate de que cron se ejecute regularmente.

Los roles y permisos de grupo no se están aplicando

Limpia la caché después de hacer cambios. Verifica que el usuario tenga una membresía activa (no pendiente o bloqueada) en el grupo. Comprueba que los permisos correctos estén asignados al rol del usuario en admin/config/group/permissions.

El contexto del grupo no se está detectando

Verifica que los plugins de resolución de grupo estén correctamente ordenados en la configuración de OG. El orden predeterminado es: route_group, route_group_content, request_query_argument, user_access. Limpia la caché después de los cambios de configuración.

Security Notes 6
  • El permiso 'administer organic groups' otorga acceso completo a todos los grupos - restringe esto solo a administradores de confianza.
  • Los permisos a nivel de grupo con el flag 'restrict access' (como 'administer group') solo deben otorgarse a roles de confianza.
  • Cuando 'Strict node access permissions' está desactivado, los usuarios con permisos globales de edición pueden modificar el contenido del grupo independientemente de la membresía.
  • El permiso 'subscribe without approval' permite a los usuarios unirse a grupos inmediatamente - solo otorga esto para grupos públicos.
  • Los propietarios de grupo siempre retienen ciertos permisos - asegúrate de que la transferencia de propiedad se maneje apropiadamente al cambiar la propiedad del grupo.
  • Las implementaciones personalizadas de hook_og_user_access_alter() deben añadir correctamente las dependencias de caché para evitar resultados de acceso obsoletos.