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 d’élaboration (WIP).


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

Pour référence rapide, certains identifiants 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 liés à ce système alors que nous approchons de la stabilité. 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 pour cela.

Problèmes de haute priorité

Problème soulevé par Moin :

Plugins du cœur

  • Modèles Discourse
      • 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 guardian 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. Pas mal 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 showStatusToUser sur user.groups et la vérification everyone. Modifier activity_pub_post_status_visibility_groups pour qu’il soit par défaut 4|5.
  • Suggestions de modifications
    • 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 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 pseudogroupes
  • Live

Thèmes

Composants

Problèmes de basse priorité

  • Cœur
    • 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 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
    • Ajouter 0|4|5 aux disallowed_groups pour about_page_extra_groups, cela est censé traiter uniquement les groupes concrets sur la page à propos
    • Notez dans can_view? pour PresenceChannel que nous devons supprimer la vérification Group::AUTO_GROUPS[:everyone] lorsque ce changement à venir passera à Permanent

Plugins du cœur

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

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 administrateur spéciale dans guardian. 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 administrateur spéciale dans guardian. 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

  • Migrer allowed_group_ids du modèle AiAgent

Fait ici FIX: everyone pseudogroup roadmap part 1 - Pull Request #43798 - discourse/discourse - GitHub