Eventos privados y de grupo

Actualmente, las entradas de eventos siempre forman parte del elemento de interfaz del calendario, que puede añadirse a una categoría. No existe forma de restringir un evento a un grupo de usuarios específico. Si tienes una configuración de Discourse con múltiples comunidades, todas las comunidades ven todos los eventos de todas las demás comunidades. Si muestras los eventos de Discourse externamente en un sitio web mediante una llamada a la API como

https://example.discourse.org/discourse-post-event/events.ics?user_api_key=[xxxxx]

se mostrarán TODOS los eventos.

Debería existir una opción para crear eventos «internos» que solo se muestren dentro de un grupo de usuarios. Estos eventos no deberían ser legibles mediante la solicitud de la API ICS «general». En su lugar, deberían estar disponibles únicamente mediante una «clave de API de grupo» especial y adicional, o algún otro tipo de restricción segura. El caso de uso es la distinción entre eventos «públicos» y eventos «privados» que solo son visibles y editables dentro de un grupo de usuarios específico.

:information_source: Corrección: parece que los eventos creados dentro de un grupo ya respetan los permisos del grupo en el calendario mostrado dentro de las categorías restringidas por grupo. Lo único que falta es algún tipo de restricción para las llamadas a la API a través de «https://example.discourse.org/discourse-post-event/events.ics?user_api_key=[xxxxx]»

1 me gusta

¿Funcionaría en tu caso crear un usuario que pertenezca únicamente al grupo que necesitas y generar la URL de suscripción al calendario a partir de las preferencias de ese usuario? El feed solo incluiría los eventos que ese usuario puede ver.

1 me gusta

Mmm, no estoy seguro. Suena más a un workaround que a una verdadera “solución” :smiling_face_with_sunglasses:

Todas las personas dentro de un grupo específico de la comunidad deberían poder crear eventos. Y también verlos cuando entran en la categoría de “su” comunidad. Esto ya funciona bien en nuestra configuración actual con 5 comunidades diferentes. Usamos los siguientes permisos de categoría:

  1. una categoría por grupo de comunidad. Esta tiene “solo lectura global” y “lectura/creación/respuesta de comunidad”. Esta categoría se federiza a través de AP para permitir que las personas sin cuentas de Discourse vean los eventos y también para permitir la integración del calendario de Discourse en sistemas de terceros (p. ej., WordPress con el plugin ICS)
  2. un número variable de subcategorías internas. Estas subcategorías solo tienen permisos de “lectura/creación/respuesta de comunidad”. Son invisibles sin los permisos de grupo adecuados.

Los únicos vacíos son

  1. la solicitud ics actual presenta TODOS los eventos
  2. alguna manera de solicitar solo los eventos de una comunidad en particular a través de ICS/API.

¿Todos los eventos, o todos los eventos a los que tiene acceso el usuario cuya clave API se utiliza?

¿Cómo imaginas el proceso de selección de qué eventos deben incluirse en la solicitud en particular?

Buena observación.

Existen dos niveles de usuario para las claves API: “usuario único” o “todos los usuarios”. Las claves API que utilizamos actualmente para la solicitud ICS tienen el nivel de “todos los usuarios”.

Por lo tanto, para resolver esto probablemente necesitaríamos claves API de nivel “usuario único”. Y el usuario seleccionado debería tener solo el grupo de permisos de comunidades, nada más.

Déjame verificarlo. Quizás esto podría resolver el problema …

1 me gusta