No se puede agregar usuario en modo anónimo a un grupo automáticamente

¡Hola a todos!

Estoy ejecutando un foro con Discourse 2.6.0beta3 y creo que he encontrado un error.

Intento agregar usuarios anónimos a un grupo llamado anons para poder restringir sus publicaciones en ciertas categorías específicas. He configurado el grupo anons para que agregue usuarios automáticamente según el dominio de correo anon.mydomain.

Cuando ingreso al modo anónimo, descubro que mi cuenta anónima no se agrega al grupo. Sin embargo, si hago clic en el botón Guardar cambios en /g/anons/manage/membership, mi cuenta anónima sí se agrega a este grupo. Solo quiero que el usuario anónimo se agregue a este grupo al entrar en modo anónimo, sin necesidad de que yo haga clic.

He buscado información sobre este error, pero no he encontrado nada útil. ¡Gracias por su tiempo!

1 me gusta

Puedo reproducir lo que estás encontrando cuando un usuario entra en modo anónimo. Para que el usuario se agregue automáticamente a un grupo basado en el dominio del correo electrónico anónimo, tengo que ir a la página de administración del grupo anónimo y guardar la configuración.

No estoy seguro de que se espere que agregar usuarios anónimos a un grupo basado en el dominio del correo electrónico anónimo funcione. Sin embargo, veo cómo sería útil tener a todos los usuarios anónimos en un grupo. La estrategia de agregar usuarios anónimos a un grupo basado en su dominio de correo electrónico se ha sugerido varias veces en Meta. Una alternativa sería agregar una configuración de grupo de modo anónimo que agregue automáticamente a todos los usuarios anónimos a un grupo elegido.

Veamos si esta es una funcionalidad que Discourse desea admitir antes de decidir si se trata de un error.

3 Me gusta

Creo que sería arriesgado confiar en el correo electrónico anónimo para esta funcionalidad. Podríamos considerar crear otro grupo automático para usuarios anónimos y agregarlos allí automáticamente.

Sin embargo, no lo considero un error, por lo que lo estoy recategorizando.

3 Me gusta

Hola, este tema es relevante para un problema que estoy teniendo en un foro que estoy ayudando a configurar/administrar. Un poco de contexto: el foro requiere que las personas paguen para unirse como usuarios que pueden publicar. También queremos que los miembros de pago con un cierto nivel de confianza puedan publicar de forma anónima cambiando al modo anónimo. Además, queremos que todos puedan leer el contenido (excepto, por supuesto, el contenido exclusivo del personal).

Según mi entendimiento, los usuarios anónimos forman parte automáticamente del grupo de usuarios “todos”. Si quisiéramos permitir que todo el mundo publique en el foro, no habría problema de que los anónimos no pudieran publicar. Sin embargo, como es un foro de pago, hemos configurado el grupo de usuarios “todos” como solo lectura, para que el mundo pueda leer pero no publicar.

Aún queremos que los usuarios con el nivel de confianza requerido puedan publicar de forma anónima. La solución prevista era configurar un grupo de usuarios anónimos con permiso para escribir publicaciones y agregar personas según el dominio de correo electrónico anónimo que usamos en el foro. Sin embargo, el aspecto automático de la adición no está funcionando: un administrador necesita ir al grupo de usuarios anónimos y guardar los cambios para que los anónimos sean realmente agregados. Eso es bastante molesto y arruina el flujo que nos gustaría, que es que un miembro de pago con el nivel de confianza requerido pueda cambiar al modo anónimo y publicar libremente.

Entiendo que la adición automática de usuarios anónimos a un grupo es una función que quizás se está considerando como una adición a Discourse, pero aún no se ha implementado. Asumiendo que es así, ¿hay alguna otra forma razonable en la que podría configurar mi Discourse para obtener el resultado que deseo, o debo esperar a que los dioses de Discourse agreguen esta función? Gracias :slight_smile:

Escribí un plugin para copiar todos los grupos de un usuario a su sombra cuando se crea la sombra:

Descargo de responsabilidad: Soy totalmente nuevo en Ruby y, aunque funciona en mi instalación, no tengo ni idea de si funciona en otros lugares.

2 Me gusta

+1 para esta funcionalidad. ¿Se implementó alguna vez? No la veo. ¿O quizás alguien conoce un plugin para hacer esto?

(Para tu información: Encontré esto, que parece una solución alternativa decente).

uno de mis usuarios creó un plugin para que se agreguen cuentas anónimas automáticamente a un grupo del foro. aquí está mi fork en github que estoy usando. GitHub - curi/cf-anon-auto-group: Discourse plugin to trigger `user.set_automatic_groups` for anons on login ha estado funcionando bien

necesitamos esto para darles los permisos correctos para que puedan publicar cualquier cosa.

tal vez otros podrían usar esta solución o alguien podría encontrar la manera de crear un plugin más oficial o fusionar el código.

funciona en combinación con la configuración de membresía automática de grupo por correo electrónico (que no funcionó por sí sola en nuestra experiencia):

Para que conste, “resolví” este problema a nivel de base de datos en un foro que administro. Úsalo solo si no puedes conseguir que funcionen otras soluciones de nivel superior (¿ha habido algún progreso en esto, o se debería marcar alguna respuesta existente como “resuelto”?). Aquí tienes el código de PostgreSQL:

create or replace function anon_insert_copy_groups_to_anon_user()
  RETURNS TRIGGER 
  LANGUAGE PLPGSQL
  AS $$
declare
  anon_user_id integer = new.user_id;
  master_user_id integer = new.master_user_id;
  active boolean = new.active;
  created_at timestamp = new.created_at;
  updated_at timestamp = new.updated_at;
BEGIN
  insert into group_users 
        (group_id,                user_id,       created_at,        updated_at,        owner, notification_level,     first_unread_pm_at)
  select group_users.group_id, anon_user_id , current_timestamp, current_timestamp, false, 3 as notification_level, current_timestamp
  from group_users 
  where group_users.user_id=master_user_id
  and   group_users.group_id not in (select group_id from group_users where group_users.user_id=anon_user_id)
  and   group_users.group_id not in (1, 2, 3); -- ¡excluir administradores, moderadores y personal!

  return new;
end;
$$;

-- Crear el disparador
CREATE TRIGGER anon_insert_trigger
AFTER INSERT ON anonymous_users
  FOR EACH ROW
    EXECUTE FUNCTION anon_insert_copy_groups_to_anon_user();