Validazioni di Autenticazione Discourse

|||
-|-|-|
:discourse2: | Riepilogo | Discourse Authentication Validations abilita la possibilità di aggiungere validazioni personalizzate a un campo utente per attivare la visualizzazione dei campi utente nella modale di registrazione.
:hammer_and_wrench: | Link al Repository | https://github.com/discourse/discourse-authentication-validations
:open_book: | Guida all’installazione | Come installare plugin in Discourse

:information_source: Informazioni

Discourse Authentication Validations aggiunge la possibilità di aggiungere validazioni personalizzate a un campo utente.

I campi utente personalizzati non hanno alcun tipo di validazione fornita dal core, al di fuori del rilevamento di un valore vuoto in un campo obbligatorio. Questo plugin aggiunge la possibilità di definire un’espressione regolare, per campo utente, che verrà quindi verificata rispetto al valore di input fornito.

Inoltre, questo plugin aggiunge la possibilità di attivare la visualizzazione dei campi utente nella modale di registrazione. Ciò consente di “collegare” i campi utente tra loro, in modo che un campo utente venga visualizzato solo se un campo utente precedente ha un valore specifico.

:building_construction: Configurazione di base

1. Abilita Plugin

Il plugin Discourse Authentication Validations può essere abilitato tramite l’interruttore o dalle sue impostazioni, entrambi accessibili dalla pagina admin/plugins.

2. Aggiungi una validazione personalizzata a un campo utente

Dopo che il plugin Discourse Authentication Validations è stato abilitato, vedrai una casella di controllo Includi validazioni personalizzate in fondo al modulo del tuo campo utente.

Quando selezionata, visualizzerà tre campi aggiuntivi:

  1. Espressione regolare di validazione del valore
  2. Mostra valori
  3. Campi utente di destinazione

:closed_lock_with_key: Aggiungere una validazione personalizzata

Includi un’espressione regolare valida nel campo Espressione regolare di validazione del valore:

Il valore del campo utente nel modulo di registrazione verrà ora testato rispetto all’espressione regolare inclusa. Nel caso in cui l’input non soddisfi gli standard della tua espressione regolare personalizzata, il modulo di registrazione non verrà inviato.

Nessun valore (si basa sulla validazione predefinita del modulo)

Valore errato

Valore corretto

:link: Collegamento di campi utente

Innanzitutto, includi un valore Mostra valori in un campo utente.

Quando un campo utente ha un valore Mostra valori incluso, osserverà il valore dell’input associato finché il valore dell’input non corrisponderà a QUALSIASI dei Mostra valori. Quindi attiverà la visibilità di eventuali Campi utente di destinazione inclusi, rendendoli visibili.

In secondo luogo, aggiungi un valore Campi utente di destinazione.

Nel menu a discesa Campi utente di destinazione vedrai un elenco di tutti i campi utente disponibili. Qualsiasi campo utente selezionato avrà la sua visibilità attivata dai valori corrispondenti in Mostra valori.

:hammer_and_wrench: Collegamento avanzato

Puoi collegare i campi utente aggiungendo validazioni personalizzate a più campi utente.

Ad esempio, supponiamo di avere tre campi utente con i seguenti valori:

Nome Ha una validazione personalizzata Mostra valori Campi utente di destinazione
Input Uno vero mostra-campo-due Input Due
Input Due vero mostra-campo-tre Input Tre
Input Tre falso

Input Due e Tre saranno nascosti per impostazione predefinita poiché sono “figli” di Input Uno. Quando il valore di visualizzazione di mostra-campo-due viene aggiunto a Input Uno, Input Due verrà visualizzato, ma Input Tre rimarrà comunque nascosto. Rimarrà nascosto finché Input Due non avrà il valore di mostra-campo-tre.

Con la combinazione corretta di Mostra Valori e Classi di Destinazione puoi annidare infinitamente i campi utente uno sotto l’altro.

18 Mi Piace

Ciao @isaac.

Adoro questo plugin, è esattamente quello di cui ho bisogno! È ancora in fase di manutenzione? Ho problemi con la funzionalità di “chaining”.

Ho seguito l’esempio sopra usando:

Ma mostra tutti i campi per impostazione predefinita… Mi scuso se mi è sfuggito qualcosa nella descrizione!

1 Mi Piace

Mi scuso per questo: il plugin funziona. Tuttavia, non funziona se si visualizza tramite un link di iscrizione “invito”. Funziona se si utilizza una pagina di iscrizione pubblica.

Potrebbe essere una bella funzionalità far funzionare la logica sia per l’iscrizione tramite invito che per quella pubblica!

Ottimo lavoro con il plugin!

5 Mi Piace

Sono molto d’accordo. @tobiaseigen se dovessimo adottare questo plugin come funzionalità in modo più ampio, vorremmo che la logica funzionasse in entrambi i posti (pubblico/invito) come ha sottolineato @kravitsjacob.

2 Mi Piace

Ciao @isaac. Grazie ancora per questo incredibile plugin: mi ha davvero aperto così tante opportunità di discussione.

Ho riscontrato un piccolo bug: ho notato che le risposte alle domande vengono salvate, anche se una domanda è nascosta. Questo ha portato a poche situazioni indesiderate in cui gli utenti inviano risposte che in realtà non dovrebbero essere possibili (motivo per cui volevamo nascondere le domande in primo luogo). Questo comportamento causa anche un’altra situazione in cui, quando una domanda è doppiamente annidata, appare comunque anche se la risposta genitore è stata deselezionata (perché pensa ancora che la risposta scatenante sia selezionata). So che questa descrizione è un po’ vaga, quindi ecco una gif che evidenzia questo comportamento:

auth null bug

Penso che la correzione desiderata sarebbe reimpostare le risposte al valore null una volta che non sono più visibili. Questo potrebbe anche essere un comportamento “opt-in” configurabile da chi imposta il modulo: potrei vedere esistere filosofie diverse sul fatto che le risposte debbano persistere quando si scende in questi alberi.

Saresti in grado di implementarlo? :pray:

5 Mi Piace

Grazie per la risposta dettagliata! Ci darò un’occhiata la prossima settimana :slight_smile:

3 Mi Piace

Ho avuto l’opportunità di esaminare questi problemi oggi :slight_smile:

Si prega di leggere la descrizione della PR per i dettagli!

3 Mi Piace

Attualmente è impossibile avere un campo obbligatorio opzionale.

Ho un campo “Settore” e ogni volta che viene selezionato “Altro”, viene visualizzato il campo “Altro Settore”.

Ma quando rendo obbligatorio il campo “Altro Settore”, non riesco a inviare il modulo quando quel campo è nascosto.

Quando nascondo manualmente il div si può vedere che richiede questo input, anche se il modulo è nascosto.

Quando seleziono “Altro”, inserisco un valore e poi seleziono un altro settore in modo che l’input venga nuovamente nascosto, posso inviare il modulo. E poi si verifica la stessa situazione che @kravitsjacob ha sottolineato: il valore del campo “Altro Settore” viene salvato nel profilo dell’utente, anche se “Settore” non è impostato su “Altro”.

Amministratore utente:

3 Mi Piace

Ciao @RGJ, sei riuscito a risolvere il problema con i campi obbligatori? Ho lo stesso problema.
@isaac c’è una soluzione alternativa per questo? Ho campi che dovrebbero essere obbligatori mentre viene creata la condizione per renderli visibili.

No, non ho ricevuto risposta in merito né ho dedicato tempo io stesso.

@RGJ, grazie per la rapida risposta.
Ho appena creato una PR nel repository originale con una correzione che dovrebbe risolvere il problema.
La sfida principale qui era il fatto che la validazione viene eseguita in due punti, Frontend e Backend, quindi ho dovuto implementare la soluzione per ciascuno separatamente e assicurarmi che funzionassero come previsto.
Spero che questo aiuti qualcuno in futuro.