La strada verso la stabilità e poi la permanenza per granular_anonymous_and_logged_in_groups_permissions

Questo è un argomento correlato a Granular group-based permissions for anonymous and logged in users ed è in fase di sviluppo (WIP).


Ci sono ancora alcuni punti in vari codebase per core, plugin e temi che fanno riferimento diretto al gruppo everyone o all’ID del gruppo (0), senza tenere conto di questa imminente modifica o senza utilizzare user.in_any_groups? o i vari metodi guardian utilizzati per gestirlo.

Per riferimento rapido, alcuni ID di gruppo automatici:

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

Questo argomento funge da punto centrale per tenere traccia delle correzioni per questo sistema man mano che ci avviciniamo alla versione stabile. I plugin e i temi personalizzati per i clienti di Discourse non sono tracciati qui; avrò un elenco separato internamente per questo scopo.

Problemi ad alta priorità

Problema sollevato da Moin:

Plugin Core

  • Discourse Templates
      • can_use_private_templates? fa ancora riferimento direttamente a everyone e non utilizza la notazione abbreviata _map sulle impostazioni del sito.
  • Discourse AI
      • can_see_summary? nelle estensioni guardian non usa user.in_any_groups?
      • can_attach? in AiBot::Playground non usa user.in_any_groups?
      • addTopicAdminMenuButton in ai-translation-topic-admin guarda a currentUser.groups sul client, il che non è affidabile; effettuare invece un controllo lato server per content_localization_allowed_groups
  • Discourse Assign. Ci sono parecchi problemi qui.
    • Invece di user_ids_in_groups in AssignmentPermissions, dovremmo usare user_ids_in_groups
    • A assign_allowed_on_groups dovrebbe essere aggiunto 0|4|5 in disallowed_groups; nessuno di questi ha senso qui, contano solo i gruppi concreti.

Altri plugin

  • Activity Pub
    • Rimuovere il controllo client-side di showStatusToUser su user.groups e il controllo di everyone. Cambiare activity_pub_post_status_visibility_groups per impostazione predefinita su 4|5.
  • Suggested Edits
    • user_in_suggested_edits_group? deve usare user.in_any_groups? in GuardianExtensions. Aggiungere 1 a mandatory_groups per suggested_edits_review_groups e rimuovere il caso speciale per admin in can_review_suggested_edits_in_topic_list
    • Aggiungere 0|4|5 a disallowed_groups per suggested_edits_review_groups e suggested_edits_suggest_groups; questa impostazione non è davvero destinata a essere usata con questi pseudogruppi
  • Live

Temi

Componenti

Problemi a bassa priorità

  • Core
    • is_in_edit_topic_groups in TopicGuardian dovrebbe usare l’estensione _map per l’impostazione del sito
    • Roleable#whisperer? dovrebbe usare user.in_any_groups? e eliminare il controllo admin, aggiungendo 1 all’impostazione whispers_allowed_groups come mandatory_values
    • Aggiungere 0|4 a disallowed_groups per l’impostazione del sito allow_solved_in_groups, che riguarda solo le PM
    • Aggiungere 0|4|5 a disallowed_groups per about_page_extra_groups, che dovrebbe gestire solo gruppi concreti nella pagina about
    • Nota in can_view? per PresenceChannel: dobbiamo rimuovere il controllo Group::AUTO_GROUPS[:everyone] quando questa imminente modifica passerà a Permanent

Plugin Core

  • Chat
  • Assign
    • Eliminare add_model_callback(Group) in plugin.rb, è codice irrilevante/morto che guarda ai nomi dei gruppi invece degli ID

Altri plugin

  • Code Review
    • Il controllo can_review_code? su code_review_allowed_groups non usa l’estensione _map e non usa user.in_any_groups?. Aggiungere 1 a mandatory_groups per l’impostazione ed eliminare il controllo admin speciale in guardian. Aggiungere 0|4|5 a disallowed_groups.
  • Needs Love
    • Il controllo can_needs_love? su needs_love_allowed_groups non usa l’estensione _map e non usa user.in_any_groups?. Aggiungere 1 a mandatory_groups per l’impostazione ed eliminare il controllo admin speciale in guardian. Aggiungere 0|4|5 a disallowed_groups.
  • Staff Alias
    • Il controllo can_post_as_staff_alias su staff_alias_allowed_groups non usa l’estensione _map e non usa user.in_any_groups?. Aggiungere 0|4|5 a disallowed_groups

Temi

Componenti

Prossimi passi per la migrazione

  • Migrare allowed_group_ids del modello AiAgent

Completato qui FIX: everyone pseudogroup roadmap part 1 - Pull Request #43798 - discourse/discourse - GitHub