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 accountlogged_in_users (ID 5)- Rappresenta tutti gli utenti loggati nel tuo sito, con un effetto simile al gruppo automaticotrust_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.
