Este é um tópico complementar a Granular group-based permissions for anonymous and logged in users e está em desenvolvimento (WIP).
Ainda existem alguns lugares em diversas bases de código para o núcleo, plugins e temas que referenciam diretamente everyone ou o ID do grupo (0), sem levar em conta esta mudança iminente, 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 deste 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 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 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 usandouser.in_any_groups?
-
can_attach?em AiBot::Playground não usauser.in_any_groups?
-
addTopicAdminMenuButtonemai-translation-topic-adminolhando 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
- Remover a verificação client-side de
showStatusToUseremuser.groupse a verificação deeveryone. Mudaractivity_pub_post_status_visibility_groupspara padrão4|5.
- Remover a verificação client-side de
- Suggested Edits
user_in_suggested_edits_group?precisa usaruser.in_any_groups?emGuardianExtensions. Adicionar1amandatory_groupsemsuggested_edits_review_groupse remover o caso especial de admin emcan_review_suggested_edits_in_topic_list- Adicionar
0|4|5adisallowed_groupsparasuggested_edits_review_groupsesuggested_edits_suggest_groups; essa configuração não foi realmente destinada a ser usada com esses pseudogrupos
- Live
- Remover o workaround
untargetable_group_idsempublic_room_message_bus_targets, já que isso foi abordado em FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub - Mudar o padrão de
resenha_allowed_groupsde0para4|5
- Remover o workaround
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; adicionar1à 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 - Anotar em
can_view?paraPresenceChannelque precisamos remover a verificação deGroup::AUTO_GROUPS[:everyone]quando esta mudança iminente se mover paraPermanent
Plugins do núcleo
- Chat
- Anotar para
everyone_allowedem vários lugares na lógica de auto-entrada/saída do chat e emusers_with_unreadspara remover a verificação de:everyonequando esta mudança iminente 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 corretamente com os pseudogrupos
- Anotar para
- Assign
- Se livrar de
add_model_callback(Group)em plugin.rb; é irrelevante/código morto olhando para nomes de grupos em vez de IDs
- Se livrar de
Outros plugins
- Code Review
- A verificação de
can_review_code?emcode_review_allowed_groupsnão usa a extensão_mape não usauser.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 de
- Needs Love
- A verificação de
can_needs_love?emneeds_love_allowed_groupsnão usa a extensão_mape não usauser.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 de
- Staff Alias
- A verificação de
can_post_as_staff_aliasemstaff_alias_allowed_groupsnão usa a extensão_mape não usauser.in_any_groups?. Adicionar0|4|5adisallowed_groups
- A verificação de
Temas
Componentes
Próximas etapas para migração
- Migrar
allowed_group_idsdo modeloAiAgent