Este é um tópico complementar a Granular group-based permissions for anonymous and logged in users e está em andamento (WIP).
Ainda há alguns lugares em várias bases de código do núcleo, plugins e temas que referenciam diretamente o ID do grupo everyone ou (0), sem levar em conta esta mudança futura ou sem usar user.in_any_groups? ou os vários 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:
- Núcleo
- Sobre -
apply_excluded_groupsé usado apenas para ocultar moderadores e administradores selecionados dos grupos emabout_page_hidden_groups. Não faz sentido que pseudogrupos como0|4|5sejam usados aqui; 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 servidor, comoevaluatepara ACLs
- Sobre -
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-adminestá olhando paracurrentUser.groupsno cliente, o que não é confiável; faça uma verificação no 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
- Remova a verificação no cliente de
showStatusToUseremuser.groupse a verificação deeveryone. Altereactivity_pub_post_status_visibility_groupspara ter4|5como padrão.
- Remova a verificação no cliente de
- Suggested Edits
user_in_suggested_edits_group?precisa usaruser.in_any_groups?emGuardianExtensions. Adicione1amandatory_groupsemsuggested_edits_review_groupse remova o caso especial de admin emcan_review_suggested_edits_in_topic_list- Adicione
0|4|5adisallowed_groupsemsuggested_edits_review_groupsesuggested_edits_suggest_groups; esta configuração não é realmente destinada a ser usada com esses pseudogrupos
- Resenha
- Remova o workaround de
untargetable_group_idsempublic_room_message_bus_targets, pois isso foi abordado em FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub - Altere o padrão de
resenha_allowed_groupsde0para4|5
- Remova o workaround de
Temas
Componentes
Problemas de baixa prioridade
- Núcleo
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; adicione1à configuraçãowhispers_allowed_groupscomomandatory_values- Adicione
0|4adisallowed_groupspara a configuração do siteallow_solved_in_groups; isso lida apenas com PMs - Adicione
0|4|5adisallowed_groupsparaabout_page_extra_groups; isso deve lidar apenas com grupos concretos na página sobre - Anote em
can_view?paraPresenceChannelque precisamos remover a verificação deGroup::AUTO_GROUPS[:everyone]quando esta mudança futura passar paraPermanent
Plugins do núcleo
- Chat
- Anote para
everyone_allowedem vários lugares na lógica de auto-entrada/saída do chat eusers_with_unreadspara remover a verificação de:everyonequando esta mudança futura passar paraPermanent - Atualize
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
- Anote para
- Assign
- Elimine
add_model_callback(Group)em plugin.rb; é código irrelevante/morto que olha para nomes de grupos em vez de IDs
- Elimine
Outros plugins
- Code Review
- A verificação de
can_review_code?emcode_review_allowed_groupsnão usa a extensão_mape não está usandouser.in_any_groups?. Adicione1amandatory_groupspara a configuração e elimine a verificação especial de admin no guardian. Adicione0|4|5adisallowed_groups.
- A verificação de
- Needs Love
- A verificação de
can_needs_love?emneeds_love_allowed_groupsnão usa a extensão_mape não está usandouser.in_any_groups?. Adicione1amandatory_groupspara a configuração e elimine a verificação especial de admin no guardian. Adicione0|4|5adisallowed_groups.
- A verificação de
- Staff Alias
- A verificação de
can_post_as_staff_aliasemstaff_alias_allowed_groupsnão usa a extensão_mape não está usandouser.in_any_groups?. Adicione0|4|5adisallowed_groups
- A verificação de
Temas
Componentes
Próximas etapas para migração
A definir