Auto-Logout gefixed #issue/39 #40

Merged
lrsauvette merged 4 commits from issue/39 into develop 2026-08-02 21:38:25 +00:00
Owner
No description provided.
Refreshes the README to cover everything shipped on issue/26 and
the surrounding issues:

- Adds a top-level 'Anmeldung und Rollen' section explaining the
  five roles (Administrator, Co-Schülersprecher:in,
  SVR-Mitglied, Kassenwart:in, Kassenprüfer:in), the role-based
  permission model, the first-admin setup flow and the global
  recovery code.
- New 'Kasse' section covering Einnahmen/Ausgaben, summary
  card, Verifizierung (KP-only), filter, CSV im/export and
  Kassen-Kategorien.
- New 'Datensicherung' subsection describing the .zip full
  backup (export + import).
- Adds the SVVV-Sitzungsstatistik toggle to the Verwaltung
  description and expands the Einstellungen section with the
  themed Display, Sicherheit → Benutzer verwalten and the new
  Kassen-Kategorien sub-page.
- Updates the Ämter table to the new Co-SVR-V entry (replaces
  the old SVR-V / stv. SVR-V pair) and notes that the toggle
  for changing the data storage location is admin-only.
- Expands the bottom security note to mention the multi-user
  role model and the shared recovery code.
Reviewed-on: #37
The previous implementation used a Timer.periodic that ticked
every 30 seconds and checked whether the idle time had crossed
the 30-minute threshold. In practice, the Listener wrapping
AppShell still received pointer events on the regions outside
the warning dialog while the dialog was showing, which reset
state.lastActivity. The periodic tick then saw lastActivity
close to 'now' and never reached the logout condition — the
warning dialog appeared but the user was never logged out.

Replaces the periodic timer with a single Timer that is always
scheduled to fire exactly at the next transition (warning at
28 min, logout at 30 min). On every recordActivity() the timer
is rescheduled, so any synchronous activity reliably pushes the
logout out. The warning branch sets sessionWarning = true and
then schedules a follow-up timer for the remaining 2 minutes;
that follow-up is the one that actually calls logout().

3 new tests using package:fake_async cover the full sequence:
warning at 28 min, logout at 30 min, recordActivity reset,
and logout() cancelling the pending timer.
lrsauvette merged commit 8ea7924087 into develop 2026-08-02 21:38:25 +00:00
lrsauvette deleted branch issue/39 2026-08-02 21:38:29 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
lrsauvette/sv-helfer!40
No description provided.