Auth-herding: roller, kontoadmin, token-revokering + søkbar planliste + neon
Auth (app-modus):
- Roller admin/standard. Admin oppretter/sletter kontoer, resetter passord,
endrer roller (konto-modal). Eksisterende brukere → admin ved migrering;
bootstrap-bruker via proxy-bypass → admin. Siste admin vernet.
- Tilbakekalling via per-bruker epoke i tokenet: passordbytte, admin-reset,
«Logg ut alle enheter» og sletting dreper alle aktive sesjoner. Token-format
endret (3- → 4-delt) — alle logges ut én gang ved oppgradering.
Dagsplan: søkbar/velgbar planliste («📋 Planer») avledet fra planIndex —
finn plan på navn/dato/person uten å gjette dato.
GUI: login-neon trukket inn i hovedappen (header/knapper/KPI-kanter), og
login-siden fikk mer tech (HUD-hjørner, glitch-tittel, scanlines).
40 integrasjonstester (6 nye), alle grønne. README + CLAUDE.md oppdatert.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
f6268440d9
commit
3f69cd4248
9 changed files with 518 additions and 36 deletions
|
|
@ -146,6 +146,13 @@
|
|||
<div class="plan-col plan-today">
|
||||
<div class="plan-today-head">
|
||||
<div class="plan-date-row">
|
||||
<div class="plan-picker">
|
||||
<button id="plan-picker-btn" type="button" title="Bla i / søk planer">📋 Planer ▾</button>
|
||||
<div class="plan-picker-panel" id="plan-picker-panel">
|
||||
<input type="text" id="plan-picker-search" placeholder="Søk navn, dato, person …" autocomplete="off">
|
||||
<div class="plan-picker-list" id="plan-picker-list"></div>
|
||||
</div>
|
||||
</div>
|
||||
<span class="plan-cal">📅</span>
|
||||
<input type="date" id="plan-date" title="Velg dag å planlegge">
|
||||
<input type="text" id="plan-name" class="plan-name-input" maxlength="80" autocomplete="off"
|
||||
|
|
@ -327,9 +334,9 @@
|
|||
</div>
|
||||
|
||||
<div class="modal-overlay" id="account-modal">
|
||||
<div class="modal" style="max-width:440px">
|
||||
<div class="modal" style="max-width:520px">
|
||||
<div class="modal-head">
|
||||
<h2>Konto</h2>
|
||||
<h2>Konto <span id="account-role-badge" class="role-badge" style="display:none"></span></h2>
|
||||
<button class="icon-btn" id="account-close" style="font-size:18px">×</button>
|
||||
</div>
|
||||
<div class="modal-warning" id="account-status"></div>
|
||||
|
|
@ -346,12 +353,29 @@
|
|||
<label>Bekreft passord</label>
|
||||
<input type="password" id="account-newpw2" autocomplete="new-password">
|
||||
</div>
|
||||
<div class="form-field full" style="flex-direction:row;gap:8px;align-items:center;margin-top:2px">
|
||||
<button class="primary" id="account-save">Lagre passord</button>
|
||||
<button id="account-logout">Logg ut</button>
|
||||
<button class="danger" id="account-logout-all" title="Tilbakekall alle aktive økter">Logg ut alle enheter</button>
|
||||
</div>
|
||||
|
||||
<div id="account-admin" style="display:none">
|
||||
<div class="admin-divider">Administrer kontoer</div>
|
||||
<div class="admin-create">
|
||||
<input type="text" id="admin-new-user" placeholder="brukernavn" autocomplete="off">
|
||||
<input type="password" id="admin-new-pass" placeholder="passord (min 6)" autocomplete="new-password">
|
||||
<select id="admin-new-role">
|
||||
<option value="standard">Standard</option>
|
||||
<option value="admin">Admin</option>
|
||||
</select>
|
||||
<button class="primary" id="admin-create-btn">Opprett</button>
|
||||
</div>
|
||||
<div id="admin-userlist" class="admin-userlist"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-foot">
|
||||
<button class="danger" id="account-logout">Logg ut</button>
|
||||
<div style="flex:1"></div>
|
||||
<button id="account-cancel">Avbryt</button>
|
||||
<button class="primary" id="account-save">Lagre passord</button>
|
||||
<button id="account-cancel">Lukk</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue