espid2sensor: Passwort ändern + Admin-Passwort-Reset
- POST /api/changePassword: jeder eingeloggte User kann sein eigenes Passwort ändern (erfordert aktuelles Passwort), neuer Profil-Tab - POST /api/resetPassword: Admin kann das Passwort eines Users per Email zuruecksetzen, neue Karte im bestehenden User-Tab - Login-Seite: Hinweis fuer "Passwort vergessen" (Kontakt zum Admin, da keine Mail-Infrastruktur im Projekt existiert) - Bugfix beim Umsetzen: express-session's MemoryStore serialisiert Sessions per JSON, wodurch die ObjectId aus req.session.userId zu einem String wird - vor der Mongo-Query per ObjectId(...) casten Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,7 @@ html(lang="de")
|
||||
div.tabs
|
||||
button.tab-btn#tabInput.active(type="button" onclick="showTab('input')") Eingabe
|
||||
button.tab-btn#tabList(type="button" onclick="showTab('list')") Liste
|
||||
button.tab-btn#tabProfile(type="button" onclick="showTab('profile')") Profil
|
||||
if isAdmin
|
||||
button.tab-btn#tabUser(type="button" onclick="showTab('user')") User
|
||||
|
||||
@@ -67,6 +68,22 @@ html(lang="de")
|
||||
th Aktionen
|
||||
tbody
|
||||
|
||||
// Profil-Tab (für alle eingeloggten User)
|
||||
div#tabProfileContent.tab-content(style="display:none")
|
||||
div.card
|
||||
h2 Passwort ändern
|
||||
form#profileForm
|
||||
label(for="currentPassword") Aktuelles Passwort:
|
||||
input#currentPassword(type="password" required)
|
||||
label(for="newPassword") Neues Passwort:
|
||||
input#newPassword(type="password" required)
|
||||
label(for="newPasswordRepeat") Neues Passwort (Wiederholung):
|
||||
input#newPasswordRepeat(type="password" required)
|
||||
.twobuttons
|
||||
button#profileSaveBtn(type="button") Ändern
|
||||
div#profileResult
|
||||
#version Version: #{version} vom #{vdate}
|
||||
|
||||
// User-Tab (nur für Admins)
|
||||
if isAdmin
|
||||
div#tabUserContent.tab-content(style="display:none")
|
||||
@@ -81,10 +98,20 @@ html(lang="de")
|
||||
select#role
|
||||
option(value="user") User
|
||||
option(value="admin") Admin
|
||||
.twobuttons
|
||||
.twobuttons
|
||||
button#userSaveBtn(type="button") Anlegen
|
||||
button#userCancelBtn(type="button") Abbrechen
|
||||
div#userResult
|
||||
div.card
|
||||
h2 Passwort eines Users zurücksetzen
|
||||
form#resetPasswordForm
|
||||
label(for="resetEmail") Email:
|
||||
input#resetEmail(type="email" required)
|
||||
label(for="resetNewPassword") Neues Passwort:
|
||||
input#resetNewPassword(type="password" required)
|
||||
.twobuttons
|
||||
button#resetPasswordBtn(type="button") Zurücksetzen
|
||||
div#resetPasswordResult
|
||||
#version Version: #{version} vom #{vdate}
|
||||
|
||||
script(type="module" src="/global.js")
|
||||
@@ -16,6 +16,7 @@ html(lang="de")
|
||||
label(for="password") Passwort:
|
||||
input#password(type="password" name="password" required)
|
||||
button(type="submit") Login
|
||||
p.hint Passwort vergessen? Bitte an einen Admin wenden.
|
||||
#version Version: #{version} vom #{vdate}
|
||||
|
||||
if error
|
||||
|
||||
Reference in New Issue
Block a user