Este es un tema complementario a Granular group-based permissions for anonymous and logged in users , y está en desarrollo (WIP).
Aún hay varios lugares en diversas bases de código de core, plugins y temas que se refieren directamente al grupo everyone o al ID de grupo (0), sin tener en cuenta este cambio próximo, o sin utilizar user.in_any_groups? o varios 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 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 separada internamente para esto.
Problemas de alta prioridad
Problema planteado por Moin:
- Core
- About -
apply_excluded_groupssolo se usa para ocultar moderadores y administradores seleccionados de los grupos enabout_page_hidden_groups. No tiene sentido que los grupos pseudo como0|4|5se usen aquí; 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.
- About -
Plugins de core
- Discourse Templates
-
can_use_private_templates?aún se refiere directamente aeveryoney no usa el atajo_mapen la configuración del sitio.
-
- Discourse AI
-
can_see_summary?en las extensiones de 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; en su lugar, realiza una verificación del lado del servidor paracontent_localization_allowed_groups
-
- Discourse Assign. Hay bastante 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 los grupos concretos importan.
- En lugar de
Otros plugins
- Activity Pub
- Eliminar la verificación del lado del cliente de
showStatusToUserparauser.groupsy la verificación deeveryone. 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; esta configuración no está realmente destinada a usarse con estos grupos pseudo
- Resenha
- 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
- Core
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 solo trata con mensajes privados (PMs) - 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 próximo se mueva aPermanent
Plugins de core
- Chat
- Nota para
everyone_alloweden varios lugares de la lógica de auto-entrada/auto-salida de chat yusers_with_unreadspara eliminar la verificación de:everyonecuando este cambio próximo se mueva aPermanent - Actualizar
chat_allowed_group_idsenChat::Publisherpara eliminar el grupo pseudo especial, ya que en FIX: Handle new pseudogroups in message bus group IDs - Pull Request #42610 - discourse/discourse - GitHub MessageBus ahora puede manejar los grupos pseudo 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?encode_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?enneeds_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_aliasenstaff_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