Este é um tópico complementar ao Granular group-based permissions for anonymous and logged in users e está em desenvolvimento (WIP).
Ainda existem alguns locais em várias bases de código para o núcleo, plugins e temas que referenciam diretamente o grupo everyone ou o ID do grupo (0), sem levar em conta essa mudança futura ou sem usar user.in_any_groups? ou os diversos métodos de guardian usados para lidar com isso.
Para referência rápida, alguns IDs de grupos automáticos:
0-everyone1-admins2-moderators3-staff4-anonymous_users5-logged_in_users
Este tópico serve como um local central para acompanhar as correções para este sistema à medida que nos aproximamos da versão estável. Plugins e temas personalizados para clientes do Discourse não são rastreados aqui; terei uma lista separada internamente para isso.
Problemas de alta prioridade
Problema levantado por Moin:
- Core
- About -
apply_excluded_groupsé usado apenas para ocultar moderadores e administradores selecionados dos grupos emabout_page_hidden_groups. Não faz sentido usar pseudogrupos como0|4|5aqui; eles devem ser adicionados adisallowed_groups. Precisamos atualizar a descrição da configuração também, pois é enganosa. - EditCategoryTabsController - Em
_wouldLoseAccessdiscourse/frontend/discourse/admin/controllers/edit-category/tabs.js at 86552acfbaf816db3b9db5f761f5e9f2bd221c21 · discourse/discourse · GitHub estamos olhando apenas para grupos visíveis; isso deve ser uma verificação no lado do servidor, comoevaluatepara ACLs
- About -
Plugins do núcleo
- Discourse Templates
-
can_use_private_templates?ainda referenciaeveryonediretamente e não usa o atalho_mapnas configurações do site.
-
- Discourse AI
-
can_see_summary?nas extensões de guardian não está usandouser.in_any_groups?
-
can_attach?em AiBot::Playground não está usandouser.in_any_groups?
-
addTopicAdminMenuButtonemai-translation-topic-adminolhando paracurrentUser.groupsno cliente, o que não é confiável; faça uma verificação no lado do servidor paracontent_localization_allowed_groupsem vez disso
-
- Discourse Assign. Bastante problemas aqui.
- Em vez de
user_ids_in_groupsemAssignmentPermissions, devemos usaruser_ids_in_groups assign_allowed_on_groupsdeve ter0|4|5adicionado adisallowed_groups; nenhum desses faz sentido aqui, apenas grupos concretos importam.
- Em vez de
Outros plugins
- Activity Pub
- Remover a verificação client-side de
showStatusToUserparauser.groupse a verificação deeveryone. Alteraractivity_pub_post_status_visibility_groupspara ter4|5como padrão.
- Remover a verificação client-side de
- Suggested Edits
user_in_suggested_edits_group?precisa usaruser.in_any_groups?emGuardianExtensions. Adicionar1asuggested_edits_review_groupsemmandatory_groupse remover o caso especial de admin emcan_review_suggested_edits_in_topic_list- Adicionar
0|4|5asuggested_edits_review_groupsesuggested_edits_suggest_groupsemdisallowed_groups; essa configuração não foi realmente destinada a ser usada com esses pseudogrupos
- Resenha
- Remover o workaround de
untargetable_group_idsempublic_room_message_bus_targets, pois isso foi resolvido em FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub - Alterar o padrão de
resenha_allowed_groupsde0para4|5
- Remover o workaround de
Temas
Componentes
Problemas de baixa prioridade
- Core
is_in_edit_topic_groupsemTopicGuardiandeve usar a extensão_mappara a configuração do siteRoleable#whisperer?deve usaruser.in_any_groups?e se livrar da verificação de admin, adicionando1à configuraçãowhispers_allowed_groupscomomandatory_values- Adicionar
0|4adisallowed_groupspara a configuração do siteallow_solved_in_groups; isso lida apenas com PMs - Adicionar
0|4|5adisallowed_groupsparaabout_page_extra_groups; isso deve lidar apenas com grupos concretos na página sobre - Nota em
can_view?paraPresenceChannelde que precisamos remover a verificação deGroup::AUTO_GROUPS[:everyone]quando essa mudança futura se mover paraPermanent
Plugins do núcleo
- Chat
- Nota para
everyone_allowedem vários lugares na lógica de auto-entrada/auto-saída do chat eusers_with_unreadspara remover a verificação de:everyonequando essa mudança futura se mover paraPermanent - Atualizar
chat_allowed_group_idsemChat::Publisherpara remover o pseudogrupo especial, pois em FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub o MessageBus agora pode lidar com os pseudogrupos corretamente
- Nota para
- Assign
- Se livrar de
add_model_callback(Group)em plugin.rb, é código irrelevante/morto que olha para nomes de grupos em vez de IDs
- Se livrar de
Outros plugins
- Code Review
- A verificação
can_review_code?emcode_review_allowed_groupsnão usa a extensão_mape não está usandouser.in_any_groups?. Adicionar1amandatory_groupspara a configuração e se livrar da verificação especial de admin no guardian. Adicionar0|4|5adisallowed_groups.
- A verificação
- Needs Love
- A verificação
can_needs_love?emneeds_love_allowed_groupsnão usa a extensão_mape não está usandouser.in_any_groups?. Adicionar1amandatory_groupspara a configuração e se livrar da verificação especial de admin no guardian. Adicionar0|4|5adisallowed_groups.
- A verificação
- Staff Alias
- A verificação
can_post_as_staff_aliasemstaff_alias_allowed_groupsnão usa a extensão_mape não está usandouser.in_any_groups?. Adicionar0|4|5adisallowed_groups
- A verificação
Temas
Componentes
Próximas etapas para migração
- Migrar o
allowed_group_idsdo modeloAiAgent