Session-Timer nur bei echten Interaktionen zurücksetzen #37

Merged
DasAoD merged 1 commit from fix/session-timer-real-interactions-only into main 2026-09-06 13:02:57 +02:00
Owner

Nachbesserung zu #35 / #36.

Problem

Jeder Klick auf die Seite hat die Session verlängert – auch ein Klick ins Leere. Gewünscht: nur „echte" Aktionen setzen den Timer zurück.

Änderung (session-timeout.js)

Als Aktivität zählt jetzt:

  • Klick/Tap nur, wenn das Ziel in einem interaktiven Element liegt: a[href], button, input, select, textarea, label, summary, .btn, [role="button"|"link"|"tab"|"menuitem"], [onclick]. Klick auf leere Fläche zählt nicht.
  • Tastendruck nur, wenn der Fokus in einem Eingabefeld ist (input/textarea/select/contenteditable) – nicht bei beliebigen Tasten auf der Seite.
  • Formular-submit (neuer Capture-Listener).
  • Seitenwechsel / AJAX verlängern weiterhin serverseitig über auth.php (unverändert).

Cache-Bust: session-timeout.js?v=20260906c in template.php.

Test (Browser-Harness gegen das echte JS)

Aktion Timer-Reset
Klick Leerbereich / <body> nein ✔
Klick <button> / .btn ja ✔
Klick <a href> ja ✔
keydown auf <body> nein ✔
keydown im Eingabefeld ja ✔

php -l ok.

🤖 Generated with Claude Code

Nachbesserung zu #35 / #36. ## Problem Jeder Klick auf die Seite hat die Session verlängert – auch ein Klick ins Leere. Gewünscht: nur „echte" Aktionen setzen den Timer zurück. ## Änderung (`session-timeout.js`) Als Aktivität zählt jetzt: - **Klick/Tap** nur, wenn das Ziel in einem interaktiven Element liegt: `a[href]`, `button`, `input`, `select`, `textarea`, `label`, `summary`, `.btn`, `[role="button"|"link"|"tab"|"menuitem"]`, `[onclick]`. Klick auf leere Fläche zählt **nicht**. - **Tastendruck** nur, wenn der Fokus in einem Eingabefeld ist (`input`/`textarea`/`select`/`contenteditable`) – nicht bei beliebigen Tasten auf der Seite. - **Formular-`submit`** (neuer Capture-Listener). - Seitenwechsel / AJAX verlängern weiterhin serverseitig über `auth.php` (unverändert). Cache-Bust: `session-timeout.js?v=20260906c` in `template.php`. ## Test (Browser-Harness gegen das echte JS) | Aktion | Timer-Reset | |---|---| | Klick Leerbereich / `<body>` | nein ✔ | | Klick `<button>` / `.btn` | ja ✔ | | Klick `<a href>` | ja ✔ | | `keydown` auf `<body>` | nein ✔ | | `keydown` im Eingabefeld | ja ✔ | `php -l` ok. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
- a click on empty page area no longer counts as activity; clicks/taps now only extend when the target is inside an interactive element (a[href], button, input, .btn, [role=button], ...)
- keydown only extends when focus is in an editable field (input/textarea/select/contenteditable), not on stray key presses
- added a capture-phase 'submit' listener so form submits still count
- bump session-timeout.js cache-bust to 20260906c

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
DasAoD merged commit dd21a111f0 into main 2026-09-06 13:02:57 +02:00
Sign in to join this conversation.
No description provided.