Permessi granulari basati su gruppi per utenti anonimi e registrati

Nella nostra codebase è esistito storicamente un pseudogruppo confuso chiamato @everyone, che può essere utilizzato per:

  • Impostazioni del sito di tipo group_list
  • Permessi delle categorie
  • Gruppi di tag

In alcuni casi, le persone interpretano @everyone come “tutti gli utenti anonimi e tutti gli utenti loggati”, mentre altre lo intendono solo come “tutti gli utenti loggati”. La realtà per le impostazioni del sito è che, nella maggior parte dei casi, significa solo “tutti gli utenti loggati”.

A complicare ulteriormente la situazione è il fatto che questo gruppo @everyone può essere utilizzato nelle impostazioni del sito in contesti in cui non ha senso concedere l’accesso a “tutti gli anonimi e gli utenti loggati”, come ad esempio pm_tags_allowed_for_groups.

Questa ambiguità crea confusione anche dal punto di vista del feature flagging e dell’esperienza degli sviluppatori, poiché per alcune modifiche future o altre impostazioni potremmo voler abilitarle realmente per “tutti gli anonimi e gli utenti loggati”.

Soluzione

Stiamo introducendo due nuovi pseudogruppi automatici distinti:

  • anonymous (ID 4) - Rappresenta gli utenti anonimi che visitano il tuo sito senza un account
  • logged_in_users (ID 5) - Rappresenta tutti gli utenti loggati nel tuo sito, con un effetto simile al gruppo automatico trust_level_0, ma più specifico

Questi gruppi sono già stati introdotti, ma avranno effetto solo quando la modifica futura granular_anonymous_and_logged_in_groups_permissions sarà abilitata sul tuo sito.

Quando la modifica futura sarà abilitata, qualsiasi impostazione con everyone come gruppo selezionato verrà automaticamente convertita nell’ID logged_in_users, quindi non ci saranno modifiche ai dati nella tabella delle impostazioni del sito al momento dell’attivazione della modifica futura. Quando la modifica futura diventerà permanente, eseguiremo una migrazione dei dati per tutte le impostazioni dei gruppi per applicare questa modifica.

Inoltre, abbiamo contrassegnato anonymous come disallowed_group per diverse impostazioni del sito in cui non ha senso, ad esempio personal_message_enabled_groups.

E per i permessi dei tag e delle categorie?

Questi permessi rimarranno invariati, poiché il loro concetto di “everyone” è diverso sotto alcuni aspetti e non si basa sul gruppo automatico sottostante.

2 Mi Piace