Rimuovere un utente da un gruppo con un effetto Trust Level non ricalcola gli iscrizioni automatiche ai gruppi degli utenti

Ho letto l’argomento, Group trust level dove si dice,

Così come questo argomento più vecchio, Should losing group membership unlock trust level?

Dove la situazione descritta in gran parte corrisponde alla mia esperienza,

Ma, quello che ho riscontrato nella mia istanza di test di Discourse è questo…

Con tutte le impostazioni di Livello di Fiducia predefinite, ho un account TL1 (U) e un gruppo chiamato tl3 che concede Trust_Level_3.

  1. Condizioni iniziali
    • Livello di Fiducia: 1: utente base Sbloccato
    • Gruppi Automatici: trust_level_0, trust_level_1
    • Gruppi Personalizzati: Nessuno
  2. Aggiungi U a tl3
    • Livello di Fiducia: 3: Regolare Sbloccato
    • Gruppi Automatici: trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • Gruppi Personalizzati: tl3
  3. Rimuovi U da tl3
    • Livello di Fiducia: 2: Membro Sbloccato
    • Gruppi Automatici: trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • Gruppi Personalizzati: Nessuno
    • NOTA: Nonostante abbia un livello di fiducia 2, l’utente è ancora nel gruppo automatico trust_level_3. Con la comprensione che un utente non può essere retrocesso a TL1 senza un livello di fiducia bloccato, il risultato atteso qui è che l’utente dovrebbe perdere immediatamente l’appartenenza al gruppo automatico trust_level_2.
  4. Blocca il livello di fiducia di U
    • Livello di Fiducia: 2: Membro Bloccato
    • Gruppi Automatici: trust_level_0, trust_level_1, trust_level_2, trust_level_3
    • Gruppi Personalizzati: Nessuno
    • NOTA: Nonostante abbia un Livello di Fiducia di 2: Membro, l’utente è ancora nel gruppo automatico trust_level_3.
  5. Sblocca il livello di fiducia di U
    • Livello di Fiducia: 1: Base Sbloccato
    • Gruppi Automatici: trust_level_0, trust_level_1
    • Gruppi Personalizzati: Nessuno

Quindi, quando si disiscrive un utente da un gruppo, il Livello di Fiducia viene ricalcolato automaticamente e istantaneamente, ma l’appartenenza al gruppo automatico non viene ricalcolata a meno che il livello di fiducia dell’utente non subisca un evento di sblocco.

La mia ipotesi è che le appartenenze ai gruppi automatici vengano calcolate a livello di sistema per tutti gli utenti una volta al giorno e le appartenenze ai gruppi automatici verranno corrette a quel punto. Ma sembra che le appartenenze ai gruppi automatici dovrebbero essere attivate o alla rimozione da un gruppo con un effetto sul livello di fiducia o attivate immediatamente ad ogni modifica del livello di fiducia, non solo ad un aumento del livello di fiducia.

Quindi la chiamata API backend a,

POST {{site}}/admin/users/{{userId}}/groups

aggiorna le appartenenze ai gruppi automatici, ma

DELETE {{site}}/admin/users/{{usedId}}/groups/{{groupId}}

non lo fa, il che sembra un bug, specialmente se si utilizzano gruppi automatici di livello di fiducia per il controllo degli accessi.

E, per completezza, ovviamente le chiamate a,

PUT {{site}}/admin/users/{{userId}}/trust_level

che vengono invocate quando si modifica manualmente il livello di fiducia di un utente nell’interfaccia di amministrazione, ricalcolano immediatamente le appartenenze ai gruppi automatici come previsto.

2 Mi Piace

Sì, la cosa fondamentale per l’esperienza di sviluppo qui è che dovremmo impedire queste manipolazioni dei gruppi automatici e forzarvi a utilizzare PUT {{site}}/admin/users/{{userId}}/trust_level solo per la transizione delle cose. Restituire un 422 o qualcosa di simile se le persone tentano di utilizzare endpoint per aggiungere o rimuovere manualmente persone dai gruppi.

L’annullamento del livello di fiducia dovrebbe sempre avvenire da qui:

Poiché ciò supporta anche il blocco, che è fondamentale.

Capisco.

Voglio solo essere chiaro, tutto il materiale relativo all’API è stato semplicemente registrato dallo stream XHR durante l’esecuzione di azioni sui membri del gruppo tramite l’interfaccia utente di gestione dei membri del gruppo. Non le sto eseguendo effettivamente come chiamate API, sono solo le chiamate API effettuate quando si utilizza l’interfaccia utente.

Quindi, il mio ragionamento è che se c’è un gruppo con un effetto TL3, fare clic su questo pulsante,

Dovrebbe rimuoverli immediatamente dal gruppo trust_level_3 se non soddisfano altrimenti i requisiti per il Livello di Fiducia 3 o se tale livello di fiducia è bloccato.

Il caso d’uso immaginato qui è permettere, diciamo, a un gruppo di utenti TL4 di essere impostati come proprietari di un gruppo con un effetto TL3 in modo che possano promuovere manualmente le persone a TL3.

L’aspetto della promozione funziona, ma gli stessi utenti che rimuovono qualcuno dal gruppo con effetto TL3 non hanno l’effetto immediato di rimuovere l’utente interessato da trust_level_3.

Comprendo appieno che si tratta di un uso molto “off-label” della funzionalità.

Sembra semplicemente incongruo che un utente possa vedere il proprio Livello di Fiducia cambiare da 3 a 2 e rimanere nel gruppo trust_level_3 fino al prossimo evento di ricalcolo.

2 Mi Piace