Permissões granulares baseadas em grupos para usuários anônimos e logados

Houve um pseudogrupo historicamente confuso chamado @everyone em nossa base de código, que pode ser usado para:

  • Configurações do site do tipo group_list
  • Permissões de categoria
  • Grupos de tags

Em alguns casos, as pessoas interpretam @everyone como “todos os usuários anônimos e todos os usuários logados”, enquanto outras o interpretam como apenas “todos os usuários logados”. Na realidade, para configurações do site, na maioria dos casos, isso significa apenas “todos os usuários logados”.

A situação fica ainda mais confusa devido ao fato de que esse grupo @everyone pode ser usado em configurações do site onde não faz sentido que “todos os usuários anônimos e logados” tenham acesso ao recurso, como em pm_tags_allowed_for_groups.

Isso também gera confusão do ponto de vista de controle de recursos (feature flagging) e experiência do desenvolvedor, já que, para algumas mudanças futuras ou outras configurações, podemos realmente querer habilitá-las para “todos os usuários anônimos e logados”.

Solução

Estamos introduzindo dois pseudogrupos automáticos separados:

  • anonymous (ID 4) - Representa usuários anônimos que visitam seu site sem conta
  • logged_in_users (ID 5) - Representa todos os usuários logados no seu site, com efeito semelhante ao grupo automático trust_level_0, mas mais específico

Esses grupos já foram introduzidos, mas só entrarão em vigor quando a mudança futura granular_anonymous_and_logged_in_groups_permissions for habilitada no seu site.

Quando a mudança futura for habilitada, qualquer configuração com everyone como grupo selecionado será automaticamente traduzida para o ID logged_in_users, de modo que nenhum dado na tabela de configurações do site será alterado ao ativar a mudança futura. Quando a mudança futura se tornar permanente, realizaremos uma migração de dados para todas as configurações de grupo para efetuar essa alteração.

Além disso, marcamos anonymous como um disallowed_group (grupo não permitido) para várias configurações do site onde não faz sentido, por exemplo, personal_message_enabled_groups.

E quanto às permissões de tags e categorias?

Essas permissões permanecerão inalteradas, pois o conceito de “everyone” nelas é diferente de algumas formas e não depende do grupo automático subjacente.

2 curtidas