Como funciona a visibilidade de grupos automáticos?

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?

5 curtidas

There is a comment in the code that explains what is going on: “hide automatic groups from all non stuff to de-clutter page.” That happens here: discourse/app/controllers/groups_controller.rb at main · discourse/discourse · GitHub.

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:

3 curtidas

Bem, isso explica. E tenho certeza de que o código foi escrito com as melhores intenções, mas está quebrado porque:

  1. Talvez eu queira que outros grupos automáticos (além de Moderadores) sejam visíveis.
  2. 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:

Nível # usuários
TL0 45.942
TL1 29.226
TL2 3.620
TL3 124
TL4 102

Olá mdoggydog :slight_smile:

Alguns pontos parecem válidos para mim, como:

O que é confuso.

Convido você a criar um tópico Feature com suas sugestões :slight_smile:

Feito!

2 curtidas

Conversa continuada em: Respect the visibility settings of all automatic groups