Este es un tema complementario a Granular group-based permissions for anonymous and logged in users , y se encuentra en desarrollo (WIP).
Aún hay algunos lugares en varios bases de código para el núcleo, plugins y temas que se refieren directamente al grupo everyone o al ID de grupo (0), sin tener en cuenta este próximo cambio, o sin utilizar user.in_any_groups? o los diversos métodos de guardian utilizados para manejar esto.
Para referencia rápida, algunos IDs de grupos automáticos:
0-everyone1-admins2-moderators3-staff4-anonymous_users5-logged_in_users
Este tema sirve como un lugar central para llevar un registro de las correcciones para este sistema a medida que nos acercamos a la versión estable. Los plugins y temas personalizados para los clientes de Discourse no se rastrean aquí; tendré una lista separada internamente para esto.
Problemas de alta prioridad
Problema planteado por Moin:
- Núcleo
- Acerca de -
apply_excluded_groupssolo se utiliza para ocultar moderadores y administradores seleccionados de los grupos enabout_page_hidden_groups. No tiene sentido que los seudogrupos como0|4|5se usen aquí, deberían agregarse adisallowed_groups. También necesitamos actualizar la descripción del ajuste, ya que es engañosa. - EditCategoryTabsController - En
_wouldLoseAccessdiscourse/frontend/discourse/admin/controllers/edit-category/tabs.js at 86552acfbaf816db3b9db5f761f5e9f2bd221c21 · discourse/discourse · GitHub solo estamos mirando los grupos visibles; esto debería ser una verificación del lado del servidor, similar aevaluatepara las ACL.
- Acerca de -
Plugins del núcleo
- Discourse Templates
-
can_use_private_templates?aún se refiere directamente aeveryoney no utiliza el atajo_mapen los ajustes del sitio.
-
- Discourse AI
-
can_see_summary?en las extensiones de guardian no utilizauser.in_any_groups?
-
can_attach?en AiBot::Playground no utilizauser.in_any_groups?
-
addTopicAdminMenuButtonenai-translation-topic-adminmiracurrentUser.groupsen el cliente, lo cual no es confiable; haz una verificación del lado del servidor paracontent_localization_allowed_groupsen su lugar.
-
- Discourse Assign. Hay bastantes problemas aquí.
- En lugar de
user_ids_in_groupsenAssignmentPermissions, deberíamos usaruser_ids_in_groups assign_allowed_on_groupsdebería tener0|4|5agregado adisallowed_groups; ninguno de estos tiene sentido aquí, solo importan los grupos concretos.
- En lugar de
Otros plugins
- Activity Pub
- Eliminar la verificación del lado del cliente de
user.groupsy la verificación deeveryoneenshowStatusToUser. Cambiaractivity_pub_post_status_visibility_groupspara que por defecto sea4|5.
- Eliminar la verificación del lado del cliente de
- Suggested Edits
user_in_suggested_edits_group?necesita usaruser.in_any_groups?enGuardianExtensions. Agregar1amandatory_groupsdesuggested_edits_review_groupsy eliminar el caso especial de administrador encan_review_suggested_edits_in_topic_list.- Agregar
0|4|5adisallowed_groupsdesuggested_edits_review_groupsysuggested_edits_suggest_groups; este ajuste no está realmente diseñado para usarse con estos seudogrupos.
- Resenha
- Eliminar el truco de
untargetable_group_idsenpublic_room_message_bus_targets, ya que esto se abordó en FIX: Handle new pseudogroups in message bus group IDs (#42610) · discourse/discourse@699ad46 · GitHub - Cambiar el valor predeterminado de
resenha_allowed_groupsde0a4|5.
- Eliminar el truco de
Temas
Componentes
Problemas de baja prioridad
- Núcleo
is_in_edit_topic_groupsenTopicGuardiandebería usar la extensión_mappara el ajuste del sitio.Roleable#whisperer?debería usaruser.in_any_groups?y deshacerse de la verificación de administrador; agregar1al ajustewhispers_allowed_groupscomomandatory_values.- Agregar
0|4adisallowed_groupspara el ajuste del sitioallow_solved_in_groups; esto solo trata con mensajes privados. - Agregar
0|4|5adisallowed_groupsparaabout_page_extra_groups; esto está destinado a tratar solo con grupos concretos en la página de información. - Anotar en
can_view?paraPresenceChannelque necesitamos eliminar la verificación deGroup::AUTO_GROUPS[:everyone]cuando este próximo cambio se mueva aPermanent.
Plugins del núcleo
- Chat
- Anotar para
everyone_alloweden varios lugares de la lógica de unirse/salirse automáticamente del chat yusers_with_unreadspara eliminar la verificación de:everyonecuando este próximo cambio se mueva aPermanent. - Actualizar
chat_allowed_group_idsenChat::Publisherpara eliminar el seudogrupo especial, ya que en FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub MessageBus ahora puede manejar los seudogrupos correctamente.
- Anotar para
- Assign
- Deshacerse de
add_model_callback(Group)en plugin.rb; es código irrelevante/muerto que mira nombres de grupos en lugar de IDs.
- Deshacerse de
Otros plugins
- Code Review
- La verificación de
can_review_code?encode_review_allowed_groupsno utiliza la extensión_mapy no utilizauser.in_any_groups?. Agregar1amandatory_groupspara el ajuste y deshacerse de la verificación especial de administrador en guardian. Agregar0|4|5adisallowed_groups.
- La verificación de
- Needs Love
- La verificación de
can_needs_love?enneeds_love_allowed_groupsno utiliza la extensión_mapy no utilizauser.in_any_groups?. Agregar1amandatory_groupspara el ajuste y deshacerse de la verificación especial de administrador en guardian. Agregar0|4|5adisallowed_groups.
- La verificación de
- Staff Alias
- La verificación de
can_post_as_staff_aliasenstaff_alias_allowed_groupsno utiliza la extensión_mapy no utilizauser.in_any_groups?. Agregar0|4|5adisallowed_groups.
- La verificación de
Temas
Componentes
Próximos pasos para la migración
Por definir (TBA)