Le chemin vers la stabilité, puis la pérennité, pour granular_anonymous_and_logged_in_groups_permissions

Ceci est un sujet complémentaire de Granular group-based permissions for anonymous and logged in users , et est en cours de rédaction (WIP).


Il reste encore quelques endroits dans les différentes bases de code du cœur (core), des plugins et des thèmes qui référencent directement le groupe everyone (ou l’ID de groupe 0), sans tenir compte de ce changement à venir, ou sans utiliser user.in_any_groups? ou les diverses méthodes de gardien (guardian) utilisées pour gérer cela.

Pour référence rapide, voici certains IDs de groupes automatiques :

  • 0 - everyone
  • 1 - admins
  • 2 - moderators
  • 3 - staff
  • 4 - anonymous_users
  • 5 - logged_in_users

Ce sujet sert de lieu central pour suivre les correctifs de ce système à mesure que nous approchons de la version stable. Les plugins et thèmes personnalisés pour les clients Discourse ne sont pas suivis ici, j’aurai une liste séparée en interne à cet effet.

Problèmes de haute priorité

Problème soulevé par Moin :

  • Cœur (Core)

Plugins du cœur (Core plugins)

  • Discourse Templates
      • can_use_private_templates? référence toujours everyone directement et n’utilise pas le raccourci _map sur les paramètres du site.
  • Discourse AI
      • can_see_summary? dans les extensions de gardien n’utilise pas user.in_any_groups?
      • can_attach? dans AiBot::Playground n’utilise pas user.in_any_groups?
      • addTopicAdminMenuButton dans ai-translation-topic-admin regarde currentUser.groups côté client, ce qui n’est pas fiable, effectuez plutôt une vérification côté serveur pour content_localization_allowed_groups
  • Discourse Assign. Beaucoup de problèmes ici.
    • Plutôt que user_ids_in_groups dans AssignmentPermissions, nous devrions utiliser user_ids_in_groups
    • assign_allowed_on_groups devrait avoir 0|4|5 ajouté à disallowed_groups, aucun de ces groupes n’a de sens ici, seuls les groupes concrets comptent.

Autres plugins

  • Activity Pub
    • Supprimer la vérification côté client de user.groups et de la vérification everyone dans showStatusToUser. Changer activity_pub_post_status_visibility_groups pour qu’il ait 4|5 par défaut.
  • Suggested Edits
    • user_in_suggested_edits_group? doit utiliser user.in_any_groups? dans GuardianExtensions. Ajouter 1 aux mandatory_groups de suggested_edits_review_groups et supprimer le cas particulier de l’administrateur dans can_review_suggested_edits_in_topic_list
    • Ajouter 0|4|5 aux disallowed_groups de suggested_edits_review_groups et suggested_edits_suggest_groups, ce paramètre n’est pas vraiment destiné à être utilisé avec ces groupes pseudo
  • Resenha

Thèmes

Composants

Problèmes de basse priorité

  • Cœur (Core)
    • is_in_edit_topic_groups dans TopicGuardian devrait utiliser l’extension _map pour le paramètre du site
    • Roleable#whisperer? devrait utiliser user.in_any_groups? et se débarrasser de la vérification de l’administrateur, ajouter 1 au paramètre whispers_allowed_groups en tant que mandatory_values
    • Ajouter 0|4 aux disallowed_groups pour le paramètre du site allow_solved_in_groups, cela ne concerne que les MP (messages privés)
    • Ajouter 0|4|5 aux disallowed_groups pour about_page_extra_groups, cela est censé ne traiter que des groupes concrets sur la page à propos
    • Note dans can_view? pour PresenceChannel indiquant que nous devons supprimer la vérification Group::AUTO_GROUPS[:everyone] lorsque ce changement à venir passera à Permanent

Plugins du cœur (Core plugins)

  • Chat
  • Assign
    • Se débarrasser de add_model_callback(Group) dans plugin.rb, c’est du code obsolète/irrélevant qui regarde les noms de groupes au lieu des IDs

Autres plugins

  • Code Review
    • La vérification can_review_code? sur code_review_allowed_groups n’utilise pas l’extension _map et n’utilise pas user.in_any_groups?. Ajouter 1 aux mandatory_groups pour le paramètre et se débarrasser de la vérification spéciale de l’administrateur dans le gardien. Ajouter 0|4|5 aux disallowed_groups.
  • Needs Love
    • La vérification can_needs_love? sur needs_love_allowed_groups n’utilise pas l’extension _map et n’utilise pas user.in_any_groups?. Ajouter 1 aux mandatory_groups pour le paramètre et se débarrasser de la vérification spéciale de l’administrateur dans le gardien. Ajouter 0|4|5 aux disallowed_groups.
  • Staff Alias
    • La vérification can_post_as_staff_alias sur staff_alias_allowed_groups n’utilise pas l’extension _map et n’utilise pas user.in_any_groups?. Ajouter 0|4|5 aux disallowed_groups

Thèmes

Composants

Prochaines étapes pour la migration

À définir (TBA)

2 « J'aime »