I’m a bit confused as to how the visibility of automatic groups works. At this point, I am just talking about the /groups directory.
Here is what I am seeing in a pretty fresh install of 2.7.0.beta4:
If an user with admin or moderator bits looks at /groups, they see all 8 automatic groups (admins, moderators, staff, trust_level_[0-4]).
If a non-admin, non-moderator user (no matter the trust_level) looks at /groups, they see only the moderators group.
But, all of these groups have the same, default Visibility settings:
Who can see this group? Logged on users
Who can see this group’s members? Everyone
Is this how it is supposed to work? Or is there something wrong with the handling of the Visibility parameters for these groups?
What the code is doing is overriding the group visibility settings for automatic groups when the groups page is viewed by a non-staff users. Only the moderators group will be displayed.
Unrelated to the issue, but when I tried to onebox the Github link that I posted above, the code was displayed in the onebox without any formatting in the preview:
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: