Estou rodando um fórum com o Discourse 2.6.0beta3 e acredito ter encontrado um bug.
Estou tentando adicionar usuários anônimos a um grupo chamado anons, para que eu possa restringir suas postagens em algumas categorias específicas. Configurei o grupo anons para adicionar usuários automaticamente com base no domínio de e-mail anon.mydomain.
Quando entro no modo anônimo, percebo que minha conta anônima não é adicionada ao grupo. No entanto, se eu clicar no botão Salvar Alterações em /g/anons/manage/membership, minha conta anônima é adicionada a esse grupo. Quero apenas que o usuário anônimo seja adicionado a esse grupo ao entrar no modo anônimo, sem que eu precise clicar.
Pesquisei sobre esse bug, mas não encontrei informações úteis. Obrigado por ler!
Consigo reproduzir o que você está encontrando quando um usuário entra no modo anônimo. Para que o usuário seja adicionado automaticamente a um grupo com base no domínio do e-mail anônimo, preciso ir à página de gerenciamento do grupo anônimo e salvar as configurações.
Não tenho certeza se é esperado que a adição de usuários anônimos a um grupo com base no domínio do e-mail anônimo funcione. No entanto, vejo como seria útil ter todos os usuários anônimos em um grupo. A abordagem de adicionar usuários anônimos a um grupo com base em seu domínio de e-mail já foi sugerida algumas vezes no Meta. Uma abordagem alternativa seria adicionar uma configuração de grupo do modo anônimo que adicione automaticamente todos os usuários anônimos a um grupo escolhido.
Vamos ver se essa é uma funcionalidade que o Discourse deseja suportar antes de decidir se é um bug.
Acho que seria arriscado confiar no e-mail anônimo para essa funcionalidade. Podemos considerar criar outro grupo automático para usuários anônimos e adicioná-los lá automaticamente.
No entanto, não considero isso um bug, então estou recategorizando.
Olá, este tópico é relevante para um problema que estou enfrentando em um fórum que estou ajudando a configurar/administrar. Um pouco de contexto: o fórum exige que as pessoas paguem para se cadastrar como usuários que podem postar. Também queremos que membros pagos com um certo nível de confiança possam postar anonimamente, alternando para o modo anônimo. Além disso, queremos que todos possam ler o conteúdo (exceto, claro, coisas restritas apenas à equipe).
Pelo que entendi, usuários anônimos são automaticamente incluídos no grupo de usuários “todos”. Se quiséssemos permitir que o mundo inteiro postasse no fórum, não haveria problema em anônimos não conseguirem postar. No entanto, como é um fórum pago, configuramos o grupo “todos” como somente leitura, para que o mundo possa ler, mas não postar.
Ainda queremos que usuários com o nível de confiança necessário possam postar anonimamente. A solução pretendida era criar um grupo de usuários anônimos com permissão para escrever posts e adicionar pessoas com base no domínio de e-mail anônimo que usamos no fórum. No entanto, a parte automática de adicionar os usuários não está funcionando: um administrador precisa ir até o grupo de usuários anônimos e salvar as alterações para que os anônimos sejam realmente adicionados. Isso é bem chato e atrapalha o fluxo que gostaríamos, que é: um membro pago com o nível de confiança necessário alterna para o modo anônimo e pode postar livremente.
Entendo que ter usuários anônimos adicionados automaticamente a um grupo é um recurso que talvez esteja sendo considerado como uma adição ao Discourse, mas ainda não foi implementado. Supondo que seja esse o caso, existe alguma outra maneira razoável de configurar meu Discourse para obter o resultado desejado, ou devo aguardar que os deuses do Discourse adicionem esse recurso? Obrigado
Para que conste, eu “resolvi” este problema no nível do banco de dados em um fórum que administro. Use apenas se não conseguir obter outras soluções de nível superior (houve algum progresso nisso, ou alguma resposta existente deve ser marcada como “resolvida”?). Aqui está o código 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); -- exclui administradores, moderadores e equipe!
return new;
end;
$$;
-- Cria o trigger
CREATE TRIGGER anon_insert_trigger
AFTER INSERT ON anonymous_users
FOR EACH ROW
EXECUTE FUNCTION anon_insert_copy_groups_to_anon_user();