Nel nostro codice esiste 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 registrati”, mentre altre lo intendono come solo “tutti gli utenti registrati”. La realtà, per le impostazioni del sito, è che nella maggior parte dei casi significa solo “tutti gli utenti registrati”.
A complicare ulteriormente le cose è il fatto che questo gruppo @everyone può essere utilizzato in impostazioni del sito dove non ha senso concedere l’accesso a “tutti gli utenti anonimi e registrati”, come ad esempio pm_tags_allowed_for_groups.
Questa situazione 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 utenti anonimi e registrati”.
Soluzione
Stiamo introducendo due nuovi pseudogruppi automatici distinti:
anonymous_users (ID 4)- Rappresenta gli utenti anonimi che visitano il tuo sito senza un accountlogged_in_users (ID 5)- Rappresenta tutti gli utenti registrati del 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 verrà abilitata sul tuo sito.
Quando la modifica futura sarà abilitata, qualsiasi impostazione con everyone come gruppo selezionato verrà automaticamente tradotta nell’ID logged_in_users, quindi nessun dato nella tabella delle impostazioni del sito verrà modificato al momento dell’attivazione della modifica futura. Quando la modifica futura diventerà permanente, eseguirò una migrazione dei dati per tutte le impostazioni dei gruppi per applicare questa modifica.
Inoltre, abbiamo segnato anonymous_users come disallowed_group per diverse impostazioni del sito dove non ha senso, ad esempio personal_message_enabled_groups.
I conflitti con i nomi di gruppi esistenti vengono gestiti automaticamente, rinominando i gruppi esistenti e aggiornando le menzioni nei post.
E per i permessi di tag e categoria?
Questi permessi rimarranno invariati, poiché il loro concetto di “everyone” è diverso in alcuni aspetti e non si basa sul gruppo automatico sottostante.


