Search the FirstSpirit Knowledge Base
Hallo liebe FirstSpirit Community,
ich versuche das Passwort des eingeloggten Users per selbst geschriebenem HTML-Formular zu ändern.
Laut Dokumentation ist das über zwei <input>-Feldern mit dem selben name-Attribut möglich.
Hier mein Code (vereinfacht):
<fsi:setSchema schema='ds_ext'>
<fsi:search resultName="usersList">
<fsi:query>
<QUERY entityType="users">
<EQ attribute="mail" datatype="java.lang.String" value="${userEMail}" />
</QUERY>
</fsi:query>
</fsi:search>
</fsi:setSchema>
<c:forEach items="${usersList}" var="userItem">
<c:set var="user" value="${userItem}" />
</c:forEach>
<form action="<%= request.getContextPath() %>/do.store" method="post">
<fsi:setSchema schema="ds_ext">
<fsi:ref value='user.userPassword' resultName='password' />
<h4>Passwort ändern</h4>
<label for="old_password">Altes Passwort *</label>
<input type="password" name="oldpass" value="" id="old_password" />
<label for="new_password">Neues Passwort *</label>
<input type="password" name="${password}" value="" id="new_password" />
<label for="new_password_again">Neues Passwort bestätigen *</label>
<input type="password" name="${password}" value="" id="new_password_again" />
<input type="hidden" name="pw_params" value="${password}" />
<input type="hidden" name="schema" value="ds_ext" />
<input type="hidden" name="url_ok" value="$CMS_REF(#global.node, abs: 1)$" />
<input type="submit" class="submit" value="> Speichern" />
</fsi:setSchema>
</form>
Leider wird das Passwort immer als Klartext in die Datenbank geschrieben, soll jedoch verschlüsselt werden (im Moment SHA, wird aber bald umgestellt auf md5 tomcat - falls das eine Rolle spielt)
Hatte schonmal jemand ein ähnliches Problem?
Bin um jeden Lösungsvorschlag dankbar.
Danke!
Hallo Daniel,
das StoreServlet aus DynamicDatabaseAccess bzw. FS Integration bietet leider keine Verschlüsselung von Werten an. Das Passwort müsste demnach bereits verschlüsselt dem Formlar übergeben werden. Man könnte dies z.B. so bewerktstelligen, dass Du beim onSubmit des Formulars ein JavaScript aufrufst, welches die beiden Passwortfelder ausliest und die Werte durch die entsprechenden verschlüsselten Werte ersetzt. Die Prüfung auf Übereinstimmung der beiden Eingaben funktioniert dann ja immer noch, nur wird sie halt auf dem verschlüsselten Wert durchgeführt, welcher dann auch in die Datenbank geschrieben wird.
Viele Grüße
Donato
Hallo Daniel,
das StoreServlet aus DynamicDatabaseAccess bzw. FS Integration bietet leider keine Verschlüsselung von Werten an. Das Passwort müsste demnach bereits verschlüsselt dem Formlar übergeben werden. Man könnte dies z.B. so bewerktstelligen, dass Du beim onSubmit des Formulars ein JavaScript aufrufst, welches die beiden Passwortfelder ausliest und die Werte durch die entsprechenden verschlüsselten Werte ersetzt. Die Prüfung auf Übereinstimmung der beiden Eingaben funktioniert dann ja immer noch, nur wird sie halt auf dem verschlüsselten Wert durchgeführt, welcher dann auch in die Datenbank geschrieben wird.
Viele Grüße
Donato
Hallo Donato,
wär zu schön gewesen. 😉
Danke für die Antwort und den hilfreichen Lösungsansatz.
Viele Grüße,
Daniel