Limitare l'esposizione del nome completo a determinati gruppi

Contesto
Stiamo cercando di configurare il nostro sito per trovare un equilibrio tra accesso aperto e preoccupazioni sulla privacy:

  1. Il sito è generalmente pubblico; gli utenti anonimi possono navigare e i motori di ricerca possono indicizzarlo. I nomi utente sono pubblici.
  2. I nomi reali (nome completo) e i profili sono considerati semi-pubblici; dovrebbero essere esposti solo ad altri membri della community (non a crawler web o a curiosi anonimi).
  3. Gli indirizzi email sono considerati completamente privati; solo gli amministratori dovrebbero avervi accesso (e l’accesso è monitorato).

Discourse si occupa già di (1) e (3) per impostazione predefinita. (Evvai!) Stiamo avendo problemi a raggiungere (2).

Disabilitando “Mostra nome nei post” e abilitando “Nascondi profili utente al pubblico”, otteniamo qualcosa che sembra un po’ meglio, ma non raggiunge del tutto (2). I risultati della ricerca utenti e gli elenchi dei destinatari dei badge mostrano ancora i nomi completi.(*) E, anche nei luoghi in cui l’interfaccia utente non mostra i nomi completi, il server li sta ancora inviando — ad esempio, nel JSON di un argomento recuperato, ogni oggetto post ha ancora il campo “name” (e “display_username”?) popolato.

Vogliamo fare la promessa ai nostri utenti che “Il tuo nome reale è esposto solo ad altri membri della community”, ma non possiamo farlo se il server sta divulgando nomi completi ovunque.

Funzionalità Proposta
Che ne dici di un’impostazione “Limita l’esposizione del nome completo ai gruppi”, con le seguenti proprietà:

  • Il valore dell’impostazione è un elenco di gruppi consentiti (con un valore che significa “tutti, anche gli utenti anonimi”).
  • Se una query proviene da una sessione client che corrisponde all’elenco consentiti, il server risponde con i nomi completi. Altrimenti, qualsiasi campo che dovrebbe contenere un nome completo riceve un valore nullo (o viene omesso dall’oggetto, ecc.)

Penso che ciò risolverebbe il nostro problema (2) — e ci permetterebbe persino di impostare il livello per la visualizzazione dei nomi reali a TL1 (rispetto a TL0).

Mi viene in mente che ciò che sto chiedendo potrebbe essere semplicemente(:blush:) una versione più granulare dell’impostazione esistente “Abilita nomi” (se disabilitarla fa ciò che promette lato server e non espone i nomi completi al client). Forse ciò renderebbe l’implementazione davvero facile… :thinking:

Questa sembra una funzionalità plausibile per il core di Discourse?

(In alternativa, sembra realizzabile con un plugin? Preferirei vederla nel core, ma voglio anche poter effettivamente aprire il nostro sito al pubblico).

(*: Impedire agli utenti anonimi di effettuare ricerche utenti e di visualizzare gli elenchi dei destinatari dei badge — e quindi di poter ottenere facilmente un elenco di tutti i nostri utenti — è un argomento completamente diverso, per un altro argomento.)

3 Mi Piace

Seguito: Ho iniziato a lavorare su un’implementazione di questo. Il mio approccio di base è:

  • Aggiungere una nuova impostazione del sito, “Nomi completi visibili ai gruppi” (cioè, “gruppi ai quali il nome completo di qualsiasi utente è visibile”).
  • Aggiungere un nuovo predicato can_see_full_names? a Guardian, che controlla l’impostazione del sito.
  • Sostituire (molte) istanze di SiteSetting.enable_names con il predicato can_see_full_names?.

Questo è stato per lo più semplice: l’ostacolo più grande è stato che i serializzatori non inoltrano i loro parametri scope, e questo si è trasformato nel suo piccolo sottoprogetto.

2 Mi Piace