Estou um pouco confuso sobre como funciona a visibilidade dos grupos automáticos. Neste momento, estou falando apenas do diretório /groups.
O que estou vendo em uma instalação bastante recente da versão 2.7.0.beta4 é:
Se um usuário com privilégios de administrador ou moderador acessar /groups, ele verá todos os 8 grupos automáticos (admins, moderators, staff, trust_level_[0-4]).
Se um usuário que não é administrador nem moderador (independentemente do nível de confiança) acessar /groups, ele verá apenas o grupo moderators.
No entanto, todos esses grupos possuem as mesmas configurações de visibilidade padrão:
Quem pode ver este grupo? Usuários logados
Quem pode ver os membros deste grupo? Todos
É assim que deveria funcionar? Ou há algum problema no tratamento dos parâmetros de Visibilidade para esses grupos?
O que o código está fazendo é sobrescrever as configurações de visibilidade de grupo para grupos automáticos quando a página de grupos é visualizada por usuários não staff. Apenas o grupo de moderadores será exibido.
Sem relação com o problema, mas quando tentei onebox o link do Github que postei acima, o código foi exibido no onebox sem qualquer formatação na pré-visualização:
Bem, isso explica. E tenho certeza de que o código foi escrito com as melhores intenções, mas está quebrado porque:
Talvez eu queira que outros grupos automáticos (além de Moderadores) sejam visíveis.
A interface de gerenciamento para grupos automáticos permite que eu defina a visibilidade de grupos automáticos não moderadores, mas essa configuração é ignorada.
Seria muito fácil simplesmente excluir esse bloco de código (e o erro tipográfico fofo que sobreviveu nos últimos 6 anos).
A coisa complicada, se alguém achasse que fosse necessário, seria mudar a configuração de visibilidade atual para grupos automáticos para "Proprietários do grupo", para que esses grupos não apareçam inadvertidamente para todas as instalações que estão acostumadas a eles serem forçados a serem invisíveis. Não sei se o Discourse tem algum tipo de mecanismo para fazer tais alterações durante uma atualização — mas é o tipo de coisa que se precisa fazer durante alterações de esquema, então deve haver algo.
Além disso: esse comportamento de “vamos apenas ocultar os grupos automáticos no catálogo de Grupos, apesar da configuração de visibilidade” é ruim porque obscurece os outros aspectos de visibility_level que ainda são significativos. Por exemplo:
O Administrador X testa as configurações de visibilidade e percebe que usuários não-membros não conseguem ver trust_level_0 no catálogo de Grupos, não importa o quê.
Então… o Administrador X deixa visibility_level e member_visibility_level definidos como “Todos”, já que essas configurações não parecem ter nenhum efeito.
O Usuário Anônimo Z navega até /groups/trust_level_0 e obtém uma lista de todos os usuários no site.
Talvez o Administrador X se importe, talvez não, mas de qualquer forma o Administrador X ficaria surpreso que isso fosse possível.
Fatos Divertidos Irrelevantes Que Eu Não Sabia Até Agora
Distribuição de usuários do meta.discourse por nível de confiança: