Discourse-Authentifizierungsvalidierungen

|||
-|-|-|
:discourse2: | Zusammenfassung | Discourse Authentication Validations ermöglicht das Hinzufügen benutzerdefinierter Validierungen zu einem Benutzerfeld, um die Anzeige von Benutzerfeldern im Anmelde-Modal umzuschalten.
:hammer_und_werkzeug: | Repository-Link | https://github.com/discourse/discourse-authentication-validations
:offenes_buch: | Installationsanleitung | So installieren Sie Plugins in Discourse

:informationsquelle: Über

Discourse Authentication Validations fügt die Möglichkeit hinzu, benutzerdefinierte Validierungen zu einem Benutzerfeld hinzuzufügen.

Benutzerdefinierte Benutzerfelder haben keine Art von Validierung, die von der Kernfunktionalität bereitgestellt wird, abgesehen von der Erkennung eines leeren Werts in einem erforderlichen Feld. Dieses Plugin fügt die Möglichkeit hinzu, pro Benutzerfeld einen Regex zu definieren, der dann gegen den eingegebenen Wert geprüft wird.

Zusätzlich fügt dieses Plugin die Möglichkeit hinzu, die Anzeige von Benutzerfeldern im Anmelde-Modal umzuschalten. Dies ermöglicht es Ihnen, Benutzerfelder miteinander zu "verketten", sodass ein Benutzerfeld nur angezeigt wird, wenn ein vorheriges Benutzerfeld einen bestimmten Wert hat.

:baustelle: Grundlegende Einrichtung

1. Plugin aktivieren

Das Plugin Discourse Authentication Validations kann entweder über den Schalter oder über seine Einstellungen aktiviert werden, beides ist auf Ihrer Seite admin/plugins zugänglich.

2. Eine benutzerdefinierte Validierung zu einem Benutzerfeld hinzufügen

Nachdem das Plugin Discourse Authentication Validations aktiviert wurde, sehen Sie unten im Formular für Ihr Benutzerfeld ein Kontrollkästchen \u003ckbd\u003eBenutzerdefinierte Validierungen einschließen\u003c/kbd\u003e.

Wenn es aktiviert ist, werden drei zusätzliche Felder angezeigt:

  1. Wertvalidierungs-Regex
  2. Werte anzeigen
  3. Zielfelder für Benutzer

:geschlossener_schloss_mit_schluessel: Hinzufügen einer benutzerdefinierten Validierung

Geben Sie einen gültigen Regex in das Feld Wertvalidierungs-Regex ein:

\u003cimg width="729" alt="Screenshot 2024-06-05 at 11 18 20 PM" src="upload://sf3eZUtDLXlzXP9vw3HqCAmoZbQ.png"\u003e

Der Wert des Benutzerfelds im Anmeldeformular wird nun gegen den von Ihnen eingegebenen Regex getestet. Wenn die Eingabe nicht den Standards Ihres benutzerdefinierten Regex entspricht, wird das Anmeldeformular nicht gesendet.

\u003ckleine\u003eKein Wert (verlässt sich auf die Standardformularvalidierung)\u003c/kleine\u003e
\u003cimg width="291" alt="Screenshot 2024-06-05 at 11 07 04 PM" src="upload://xQTYDASgAsmIE0nTlO0vGh5CFL3.png"\u003e

\u003ckleine\u003eFalscher Wert\u003c/kleine\u003e
\u003cimg width="282" alt="Screenshot 2024-06-05 at 11 07 40 PM" src="upload://yomkBUMLdjFPjdHFTJCpchPV1jq.png"\u003e

\u003ckleine\u003eRichtiger Wert\u003c/kleine\u003e
\u003cimg width="293" alt="Screenshot 2024-06-05 at 11 08 02 PM" src="upload://jv23nMcMYIaAI4B4MJAcZUlF6V1.png"\u003e

:link: Verketten von Benutzerfeldern

Fügen Sie zuerst einen Wert für Werte anzeigen zu einem Benutzerfeld hinzu.

Wenn ein Benutzerfeld einen Wert für Werte anzeigen enthält, beobachtet es den Wert der angehängten Eingabe, bis der Eingabewert mit irgendeinem der Werte anzeigen übereinstimmt. Es schaltet dann die Sichtbarkeit aller enthaltenen Zielfelder für Benutzer um und macht sie sichtbar.

Zweitens fügen Sie einen Wert für Zielfelder für Benutzer hinzu.

Im Dropdown-Menü Zielfelder für Benutzer sehen Sie eine Liste aller verfügbaren Benutzerfelder. Jedes von Ihnen ausgewählte Benutzerfeld wird seine Sichtbarkeit durch entsprechende Werte in Werte anzeigen umgeschaltet.

:hammer_und_werkzeug: Erweitertes Verketten

Sie können Benutzerfelder miteinander verketten, indem Sie benutzerdefinierte Validierungen zu mehreren Benutzerfeldern hinzufügen.

Nehmen wir zum Beispiel an, wir haben drei Benutzerfelder mit den angegebenen Werten:

Name Hat benutzerdefinierte Validierung Werte anzeigen Zielfelder für Benutzer
Eingabe Eins true zeige-feld-zwei Eingabe Zwei
Eingabe Zwei true zeige-feld-drei Eingabe Drei
Eingabe Drei false

Eingabe Zwei und Drei werden standardmäßig ausgeblendet, da sie "Kinder" von Eingabe Eins sind. Wenn der Anzeigewert von zeige-feld-zwei zu Eingabe Eins hinzugefügt wird, wird Eingabe Zwei angezeigt, aber Eingabe Drei bleibt weiterhin ausgeblendet. Sie bleibt ausgeblendet, bis Eingabe Zwei den Wert zeige-feld-drei hat.

Mit der richtigen Kombination aus Anzeigewerten und Zielklassen können Sie Benutzerfelder unendlich untereinander verschachteln.

18 „Gefällt mir“

Hallo @isaac.

Ich liebe dieses Plugin, es ist genau das, was ich brauche! Wird es noch gepflegt? Ich habe Probleme mit der „Chaining“-Funktionalität.

Ich habe das obige Beispiel befolgt und Folgendes verwendet:

Aber es werden standardmäßig alle Felder angezeigt… Ich entschuldige mich, falls ich etwas in der Beschreibung übersehen habe!

1 „Gefällt mir“

Entschuldigen Sie bitte – das Plugin funktioniert. Es funktioniert jedoch nicht, wenn Sie über einen „Einladungs“-Registrierungslink aufrufen. Es funktioniert, wenn Sie eine öffentliche Registrierungsseite verwenden.

Es wäre eine schöne Funktion, wenn die Logik sowohl für Einladungen als auch für öffentliche Anmeldungen funktionieren würde!

Tolle Arbeit mit dem Plugin!

5 „Gefällt mir“

Ich stimme vollkommen zu. @tobiaseigen, wenn wir dieses Plugin als Funktion breiter übernehmen würden, möchten wir, dass die Logik sowohl dort (öffentlich/Einladung) funktioniert, wie @kravitsjacob bereits angemerkt hat.

2 „Gefällt mir“

Hallo @isaac. Nochmals vielen Dank für dieses tolle Plugin – es hat mir wirklich so viele Diskussionsmöglichkeiten eröffnet.

Ich bin auf einen kleinen Fehler gestoßen – mir ist aufgefallen, dass Fragenantworten gespeichert werden, auch wenn eine Frage ausgeblendet ist. Dies hat zu einigen unbeabsichtigten Situationen geführt, in denen Benutzer Antworten eingereicht haben, die eigentlich nicht möglich sein sollten (deshalb wollten wir die Fragen ja ursprünglich ausblenden). Dieses Verhalten führt auch zu einer weiteren Situation, in der eine Frage, wenn sie doppelt verschachtelt ist, immer noch angezeigt wird, obwohl die übergeordnete Antwort abgewählt wurde (da sie immer noch denkt, dass die auslösende Antwort ausgewählt ist). Ich weiß, dass diese Beschreibung etwas vage ist, daher hier ein GIF, das dieses Verhalten hervorhebt:

auth null bug

Ich denke, meine gewünschte Korrektur wäre, die Antworten auf den Nullwert zurückzusetzen, sobald sie nicht mehr sichtbar sind. Dies könnte auch ein „Opt-in“-Verhalten sein, das von der Person, die das Formular einrichtet, konfiguriert werden kann – ich kann mir verschiedene Philosophien vorstellen, ob Antworten beim Durchlaufen dieser Bäume bestehen bleiben sollten.

Könntest du das implementieren? :pray:

5 „Gefällt mir“

Vielen Dank für die ausführliche Antwort! Ich werde mir das nächste Woche ansehen :slight_smile:

3 „Gefällt mir“

Ich hatte heute die Gelegenheit, mir diese Probleme anzusehen :slight_smile:

Bitte lesen Sie die PR-Beschreibung für Details!

3 „Gefällt mir“

Es ist derzeit nicht möglich, ein optionales Pflichtfeld zu haben.

Ich habe ein Feld „Branche“ und wann immer „Andere“ ausgewählt wird, wird das Feld „Andere Branche“ eingeblendet.

Aber wenn ich das Feld „Andere Branche“ zu einem Pflichtfeld mache, kann ich das Formular nicht absenden, wenn dieses Feld ausgeblendet ist.

Wenn ich das div manuell einblende, können Sie sehen, dass diese Eingabe erforderlich ist, obwohl das Formular ausgeblendet ist.

Wenn ich „Andere“ auswähle, einen Wert eingebe und dann eine andere Branche auswähle, sodass die Eingabe wieder ausgeblendet wird, kann ich das Formular absenden. Und dann passiert auch die gleiche Situation, wie @kravitsjacob darauf hingewiesen hat: Der Wert des Feldes „Andere Branche“ wird im Benutzerprofil gespeichert, obwohl „Branche“ nicht auf „Andere“ gesetzt ist.

Benutzeradministrator:

3 „Gefällt mir“

Hallo @RGJ, konnten Sie das Problem mit den Pflichtfeldern lösen? Ich habe das gleiche Problem.
@isaac gibt es dafür eine Übergangslösung? Ich habe Felder, die erforderlich sein sollten, während die Bedingung für ihre Sichtbarkeit erfüllt ist.

Nein, ich habe noch keine Rückmeldung dazu erhalten, noch habe ich selbst Zeit dafür aufgewendet.

@RGJ , vielen Dank für die schnelle Antwort.
Ich habe gerade einen PR im ursprünglichen Repository mit einer Korrektur erstellt, die das Problem lösen sollte.
Die größte Herausforderung bestand darin, dass die Validierung an zwei Stellen ausgeführt wird, nämlich im Frontend und im Backend. Daher musste ich für jede eine separate Lösung implementieren und sicherstellen, dass sie wie erwartet funktionieren.
Ich hoffe, das hilft jemandem in der Zukunft.