Wiki-Quellcode von Datenbank-Authentifikator


Zeige letzte Bearbeiter
1 Für Verwendung des Datenbank-Authentikators ist mindestens die {{formcycle/}}-Version {{version major="7" minor="4" patch="0"/}} nötig.
2
3 {{content/}}
4
5
6 Das kostenpflichtige //Datenbank-Authentikator-Plugin// stellt eine Möglichkeit zur Verfügung eine Anmeldung an einem Formular in Form einer Datenbank-Abfrage durchzuführen. Hierbei kann eine HTML-Seite inkl. Validatoren, Fehlertexten und die eigentliche Anbindung der Datenbank zur individualisiert werden. Nach dem Absenden der HTML-Seite werden für die Anmeldung die Eingaben der Login-Seite als Platzhalter für die Datenbank-Abfrage bereitgestellt. Auch steht die Möglichkeit zur Verfügung, bei nicht gefundenem Datensatz den "Login" dennoch zu erlauben. Hierbei stehen im Formular dann ausschließlich die Daten aus der Login-Seite zur Verfügung. Ferner ist es möglich eine Login-Sperre zu definieren, welche bei mehrfacher Fehlereingabe den Login anhand eines der Eingabefelder temporär sperrt.
7
8
9 == Konfiguration ==
10
11 === Anmeldeseite ===
12
13 {{figure image="Login_de.png"}}
14 Konfiguration der Login-Seite
15 {{/figure}}
16
17 ; Seitentitel
18 : Gibt den HTML-Title an. Es steht die Verwendung von i18n-Variablen zur Verfügung.
19
20 ; Seiteninhalt
21 : Hier kann der HTML-Inhalt der eigentlichen Login-Seite gepflegt werden. Dieser wird beim Ausliefern automatisch in einen HTML-Rahmen und innerhalb eines FORM-Elements gerendert. Hierbei ist zu beachten, dass alle Eingabefelder welche innerhalb der Datenbank-Abfrage verwendet werden sollen ein name-Attribute besitzen um diese mittels Platzhalter referenzieren zu können. [[Hier>>Formcycle.PluginDocumentation.DatabaseAuth.#HKonfigurationsmF6glichkeitenderLogin-Seite]] finden Sie eine weiterführende Übersicht der Konfigurationsmöglichkeiten.
22
23 ; Fehlermeldung bei nicht gefundenem Datensatz
24 : Ermöglicht die Änderung der Fehlermeldung, wenn bei der Datenbank-Abfrage kein Datensatz gefunden wurde. Es steht die Verwendung von i18n-Variablen zur Verfügung.
25
26 ; Fehlermeldung bei gesperrtem Login
27 : Ermöglicht die Änderung der Fehlermeldung der Login temporär gesperrt wurde. Es steht die Verwendung von i18n-Variablen zur Verfügung. Ferner wird das Datum, bis wann der Login gesperrt wurde als Variable zur Verfügung und kann über die [[Java-Message-Formatierung>>https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/text/MessageFormat.html]] eingefügt und in dessen Ausgabeformat angepasst werden.
28
29 === Datenbank ===
30
31 {{figure image="DB_de.png"}}
32 Konfiguration der Datenbank-Anbindung inkl. Abfrage
33 {{/figure}}
34
35
36 ; JDBC URL
37 : Definiert die JDBC URL zu anzubindenden Datenbank
38
39 ; Benutzername
40 : Definiert den Benutzernamen für den Login an der Datenbank
41
42 ; Passwort
43 : Definiert das Passwort für den Login an der Datenbank
44
45 ; Datenbank-Abfrage
46 : Definiert die eigentliche Datenbank-Abfrage zur Ermittlung eines Datensatzes basierend auf den Eingaben der Login-Seite. Diese Eingaben stehen über Platzhalter in Form von "[%<html-name-attribute>%]" zur Verfügung. Sobald eine Datenbank-Zeile bei von diesem Query zurückgegeben wird, gilt der Login als erfolgreich.
47
48
49 ; Erlaube Login ohne gefundenen Datenbank-Eintrag
50 : Ist diese Option aktiv wird der Login auch ohne gefundenen Datenbank-Eintrag erlaubt. Hierbei stehen dann ausschließlich die Daten der Login-Seite zur Verfügung.
51
52 === Login-Sperre ===
53
54 {{figure image="Lock_de.png"}}
55 Konfiguration der Login-Sperre
56 {{/figure}}
57
58 ; Attribut für die Sperr-Identifikation
59 : Definiert den Namen des HTML-Feldes, welches für die Prüfung der Login-Sperre herangezogen wird. Hierbei werden die fehlgeschlagenen Login-Versuche mit demselben Wert dieses Feldes gespeichert und bei Überschreiten einer definierten Anzahl ein Login mit diesen temporär verhindert.
60
61 ; Maximale Login-Versuche
62 : Definiert nach wie vielen fehlerhaften Login-Versuchen mit dem selben Wert dieser temporär gesperrt werden soll.
63
64 ; Sperrdauer (in Minuten)
65 : Definiert die Dauer der temporären Login-Sperre
66
67 ; Eingaben beim Auftreten der Login-Sperre deaktivieren
68 : Ist diese Option aktiviert werden alle Eingabefelder der Login-Seite beim Eintreten der Login-Sperre deaktiviert. Hierbei sind dann keine weiteren Eingaben mehr möglich.
69
70 === Zuordnung von Benutzerattributen ===
71
72 {{figure image="Attributes_de.png"}}
73 Zuordnung der Benutzer-Attribute
74 {{/figure}}
75
76 In dieser Liste wird die Zuordnung der ermittelten Werte zu den Stanard-Benutzerattributen angeboten. Hierbei können sowohl die Werte der Datenbank-Abfrage in Form der Spalten-Namen als auch die Werte der Login-Seite in Form der name-Attribute verwendet werden. Überschneiden sich diese Namen wird der Wert der Datenbank-Abfrage bevorzugt.
77
78 == Konfigurationsmöglichkeiten der Login-Seite ==
79
80 Für die Konfiguration der Login-Seite stehen neben den Standards HTML, JavaScript und CSS auch weitere Möglichkeiten zur Verfügung. So wird hier unter anderem die Bibliothek [[jQuery>>https://jquery.com/]] angeboten.
81
82 === Validierung ===
83
84 Für eine Client-seitige Validierung der Eingaben wird standardmäßig die Bibliothek [[Parsley.js>>https://parsleyjs.org]] eingebunden. Dieses ermöglicht es mittels Attributen an den Eingabefeldern z.B. deren Ausfüllung zu verpflichten oder auch ein bestimmtes Format zu erzwingt. Die Validierung wird hierbei bereits standardmäßig auf die Ereignisse "keydown" und "focusout" gebunden. Ferner wird der Absende-Button bis erst bei erfolgreicher Validierung aller Eingabe-Elemente aktiviert. Eine weiterführende Liste der Möglichkeiten von Parsley.js finden Sie in der entsprechenden [[Dokumentation>>https://parsleyjs.org/doc/index.html]].
85
86 === Weiter Attribute ===
87
88 Zusätzlich zu der Definition der Validierung stehen noch folgende Plugin-spezifische Attribute zur Verfügung:
89
90 ; data-keep-enabled
91 : Verhindert das Deaktivieren des Absende-Knopfs bei nicht validen Eingaben und das Deaktivieren einzelner Eingabefeldern bei Auftreten der Login-Sperre.
92
93 {{figure image="PW_hidden.png"}}
94 Passwortfeld mit Anzeige-Option
95 {{/figure}}
96
97
98 {{figure image="PW_show.png"}}
99 Sichtbares Passwort
100 {{/figure}}
101
102
103 ; data-show-type
104 : Ermöglicht es an einem Passwort-Feld einen Input-Typen zu definieren zu welchem mittels eines Auge-Symbols umgeschaltet werden kann. Dies ermöglicht es zu einer lesbaren Darstellungsform der Eingabe umzuschalten.
105
106
107
108 === Styling (CSS) ===
109
110 Das Plugin liefert für das Styling der Login-Seite bereits Standard-Definitionen für das Layout sowie für Eingabe-Elemente, den Login-Button und Fehleranzeigen bereits mit aus. Diese können innerhalb der Konfiguration der Login-Seite in einem HTML-Style-Tag nach Bedarf überschrieben werden. Innerhalb des HTMLs stehen ferner folgende Klassen zur Verfügung:
111
112 ; heading
113 : Definiert einen DIV-Container für die Verwendung als Oberüberschrift.
114
115 ; row
116 : Definiert einen DIV-Container als einzelne Zeile der Login-Seite. Dies ist als Container für das Label, die Beschreibung, den Fehlertext zu einem auch enthaltenen Eingabefeld vorgesehen.
117
118 ; desc
119 : Definiert einen DIV-Container innerhalb einer Zeile als Beschreibung.
120
121 ; errors
122 : Definiert einen DIV-Container für die Anzeige von Fehlern.
123
124
125 === Internationalisierung ===
126
127 In der Konfiguration des Seitentitels, des Seiteninhalts sowie in den Fehlermeldungen können die Mandant-spezifischen I18N-Variablen verwendet werden. Diese sind in Form des Platzhalters [%I18N.<Wert>%] anzugeben und werden entsprechend der Aufruf-Sprache des Formulars ersetzt. Die Pflege dieser Variablen finden Sie [[hier>>Formcycle.UserInterface.FilesAndTemplates.I18nVariables]].
128
129 === Beispiel-HTML ===
130
131 {{code language="html"}}
132 <script>
133 <!-- Setzt das maximal auswählabre Daten des Feldes 'GebDatum' auf das aktuelle Daten -->
134 $(document).ready(function() {
135 $('#GebDatum').prop('max', new Date().toLocaleDateString('fr-ca'));
136 });
137 </script>
138
139 <!-- Definition eines Headers inkl. einer Grafik -->
140 <header>
141 <img alt="XIMA" src="https://www.xima.de/typo3conf/ext/xima_sitepackage/Resources/Public/icons/logo.svg" style="height: 30px;" />
142 </header>
143
144 <!-- Definition einer Oberüberschrift -->
145 <div class="heading">
146 <h2>Anmeldung</h2>
147 <div>Um sich zu authentifizieren, geben Sie bitte folgende Daten ein:</div>
148 </div>
149
150 <!-- Definition einer Eingabe-Zeile inkl. Label, Beschreibung und des Containers für Fehlermeldungen -->
151 <div class="row">
152
153 <!-- Verwendung von I18N-Variablen -->
154 <label for="KNr">[%I18N.customerNr%]</label>
155 <div class="desc">[%I18N.customerNr.desc%]</div>
156
157 <!-- Definition des Eingabe-Elements als Passwort-Feld inkl. Validierung auf Ausfüllung, Länge und gegen ein definiertes Pattern. -->
158 <!-- Ebenso wird die Anzeige des Passworts als Text ermöglicht. Ferner wird der Container für etwaige Validierungsfehler angegeben und ein automatisches Ausfüllen durch den Browser deaktiviert. -->
159 <input autocomplete="new-password" data-parsley-errors-container="#KNrErrors" data-show-type="text" id="KNr" maxlength="10" minlength="10" name="KNr" pattern="[A-Z][0-9]{9}" required="" type="password" />
160 <div id="KNrErrors"></div>
161 </div>
162
163 <div class="row">
164 <label for="GebDatum">Geburtsdatum</label>
165 <div class="desc">Bitte geben Sie Ihr Geburtsdatum im Format TT.MM.JJJJ ein.</div>
166 <input autocomplete="new-password" data-parsley-errors-container="#GebDatumErrors" id="GebDatum" name="GebDatum" placeholder="TT.MM.JJJJ" required="" type="date" />
167 <div id="GebDatumErrors"></div>
168 </div>
169
170 <div class="row">
171 <label for="EMail">E-Mail-Adresse</label>
172 <div class="desc">Geben Sie hier Ihre E-Mail-Adresse passend zu Ihren Vertragsdaten ein.</div>
173 <input autocomplete="new-password" data-parsley-errors-container="#EMailErrors" id="EMail" required="" type="email" />
174 <div id="EMailErrors"></div>
175 </div>
176
177 <!-- Definition des Containers für Fehlermeldungen bei nicht erfolgreichem Login -->
178 <div class="errors" id="errors"></div>
179
180 <div class="row">
181 <!-- Definition des Absende-Buttons -->
182 <input type="submit" value="Anmelden" />
183 </div>
184
185 <!-- Definition einer Footers -->
186 <footer>
187 <div style="display: inline-block;"><a href="https://www.xima.de/" target="_blank">XIMA</a></div>
188 </footer>
189 {{/code}}
190
191
192 == Versionshistorie ==
193
194 === 1.0.0 ===
195
196 * Initialer Release