Este es un tema complementario a Granular group-based permissions for anonymous and logged in users y está en desarrollo (WIP).
Aún hay algunos lugares en varias bases de código del núcleo, plugins y temas que hacen referencia directa al grupo everyone o al ID de grupo (0) directamente, sin tener en cuenta este cambio inminente, o sin utilizar user.in_any_groups? o los diversos métodos 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 lugar central para hacer seguimiento de las correcciones de este sistema a medida que nos acercamos a la versión estable. Los plugins y temas personalizados para clientes de Discourse no se rastrean aquí; tendré una lista interna separada 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 se utilicen pseudogrupos como0|4|5aquí, deberían agregarse adisallowed_groups. También necesitamos actualizar la descripción de la configuración 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 comoevaluatepara ACLs
- Acerca de -
Plugins del núcleo
- Discourse Templates
-
can_use_private_templates?aún hace referencia directa aeveryoney no usa el atajo_mapen la configuración del sitio.
-
- Discourse AI
-
can_see_summary?en extensiones guardian no está usandouser.in_any_groups?
-
can_attach?en AiBot::Playground no está usandouser.in_any_groups?
-
addTopicAdminMenuButtonenai-translation-topic-adminestá mirandocurrentUser.groupsen el cliente, lo cual no es confiable; realiza una verificación del lado del servidor paracontent_localization_allowed_groupsen su lugar
-
- Discourse Assign. 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
showStatusToUsersobreuser.groupsy la verificación deeveryone. Cambiaractivity_pub_post_status_visibility_groupspara que tenga4|5como valor predeterminado.
- 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, esta configuración no está realmente destinada a usarse con estos pseudogrupos
- Live
- Eliminar el workaround de
untargetable_group_idsenpublic_room_message_bus_targetsya 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 workaround de
Temas
Componentes
Problemas de baja prioridad
- Núcleo
is_in_edit_topic_groupsenTopicGuardiandebería usar la extensión_mappara la configuración del sitioRoleable#whisperer?debería usaruser.in_any_groups?y deshacerse de la verificación de administrador, agregar1a la configuraciónwhispers_allowed_groupscomomandatory_values- Agregar
0|4adisallowed_groupspara la configuración del sitioallow_solved_in_groups, esto trata solo 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 - Nota en
can_view?paraPresenceChannelde que necesitamos eliminar la verificación deGroup::AUTO_GROUPS[:everyone]cuando este cambio inminente pase aPermanent
Plugins del núcleo
- Chat
- Nota para
everyone_alloweden varios lugares en la lógica de auto-entrada/salida de chat yusers_with_unreadspara eliminar la verificación de:everyonecuando este cambio inminente pase aPermanent - Actualizar
chat_allowed_group_idsenChat::Publisherpara eliminar el pseudogrupo especial, ya que en FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub MessageBus ahora puede manejar los pseudogrupos correctamente
- Nota 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?sobrecode_review_allowed_groupsno usa la extensión_mapy no está usandouser.in_any_groups?. Agregar1amandatory_groupspara la configuración 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?sobreneeds_love_allowed_groupsno usa la extensión_mapy no está usandouser.in_any_groups?. Agregar1amandatory_groupspara la configuración 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_aliassobrestaff_alias_allowed_groupsno usa la extensión_mapy no está usandouser.in_any_groups?. Agregar0|4|5adisallowed_groups
- La verificación de
Temas
Componentes
Próximos pasos para la migración
- Migrar
allowed_group_idsdel modeloAiAgent