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

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


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

Per riferimento rapido, alcuni ID dei gruppi 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 mentre ci avviciniamo alla versione stabile. I plugin e i temi personalizzati per i clienti di Discourse non vengono tracciati qui; avrò un elenco separato interno per questo.

Problemi ad alta priorità

Problema sollevato da Moin:

  • Core
    • About - apply_excluded_groups è utilizzato solo per nascondere moderatori & admin selezionati dai gruppi in about_page_hidden_groups. Non ha senso utilizzare pseudogruppi come 0|4|5 qui; dovrebbero essere aggiunti a disallowed_groups. Dobbiamo anche aggiornare la descrizione dell’impostazione poiché è fuorviante.

Plugin del core

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

Altri plugin

  • Activity Pub
    • Rimuovi il controllo lato client di showStatusToUser su user.groups e il controllo everyone. Cambia il valore predefinito di activity_pub_post_status_visibility_groups in 4|5.
  • Suggested Edits
    • user_in_suggested_edits_group? deve utilizzare user.in_any_groups? in GuardianExtensions. Aggiungi 1 a mandatory_groups di suggested_edits_review_groups e rimuovi il caso speciale per gli admin in can_review_suggested_edits_in_topic_list
    • Aggiungi 0|4|5 a disallowed_groups di suggested_edits_review_groups e suggested_edits_suggest_groups; questa impostazione non è realmente destinata a essere utilizzata con questi pseudogruppi
  • Resenha

Temi

Componenti

Problemi a bassa priorità

  • Core
    • is_in_edit_topic_groups in TopicGuardian dovrebbe utilizzare l’estensione _map per l’impostazione del sito
    • Roleable#whisperer? dovrebbe utilizzare user.in_any_groups? ed eliminare il controllo admin, aggiungere 1 a whispers_allowed_groups come mandatory_values
    • Aggiungi 0|4 a disallowed_groups per l’impostazione del sito allow_solved_in_groups, questa riguarda solo i messaggi privati (PM)
    • Aggiungi 0|4|5 a disallowed_groups per about_page_extra_groups, questo dovrebbe gestire solo gruppi concreti nella pagina “About”
    • Nota in can_view? per PresenceChannel che dobbiamo rimuovere il controllo Group::AUTO_GROUPS[:everyone] quando questo cambiamento imminente passa a Permanent

Plugin del core

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

Altri plugin

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

Temi

Componenti

Prossimi passi per la migrazione

TBA

2 Mi Piace