Le chemin vers la stabilité, puis la permanence, pour granular_anonymous_and_logged_in_groups_permissions

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


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

Pour référence rapide, certains ID de groupe automatique :

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

Ce sujet sert de point 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 pour cela.

Problèmes à haute priorité

Problème soulevé par Moin :

  • Noyau
    • À propos - apply_excluded_groups est uniquement utilisé pour masquer les modérateurs & admins sélectionnés des groupes dans about_page_hidden_groups. Il n’a pas de sens que des pseudogroupes comme 0|4|5 soient utilisées ici, elles devraient être ajoutées à disallowed_groups. Nous devons également mettre à jour la description du paramètre car elle est trompeuse.

Plugins du noyau

  • Discourse Templates
      • can_use_private_templates? référence toujours everyone directement et n’utilise pas l’abréviation _map sur les paramètres du site.
  • Discourse AI
      • can_see_summary? dans les extensions de 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 sur le client, ce qui n’est pas fiable, faites une vérification côté serveur pour content_localization_allowed_groups à la place
  • 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 ceux-ci n’a de sens ici, ce sont seulement les groupes concrets qui comptent.

Autres plugins

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

Thèmes

Composants

Problèmes à basse priorité

  • Noyau
    • 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 admin, ajouter 1 au paramètre whispers_allowed_groups comme mandatory_values
    • Ajouter 0|4 à disallowed_groups pour le paramètre du site allow_solved_in_groups, cela ne concerne que les MP
    • Ajouter 0|4|5 à disallowed_groups pour about_page_extra_groups, c’est censé ne concerner que les groupes concrets sur la page À propos
    • Note dans can_view? pour PresenceChannel que nous devons supprimer la vérification Group::AUTO_GROUPS[:everyone] lorsque ce changement à venir passe à Permanent

Plugins du noyau

  • 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 groupe au lieu des ID

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 à mandatory_groups pour le paramètre et se débarrasser de la vérification admin spéciale dans guardian. Ajouter 0|4|5 à 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 à mandatory_groups pour le paramètre et se débarrasser de la vérification admin spéciale dans guardian. Ajouter 0|4|5 à 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 à disallowed_groups

Thèmes

Composants

Prochaines étapes pour la migration

À déterminer

2 « J'aime »