mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 01:13:00 +02:00
Anonymise the login page: generic "Login" title, lock icon instead of product logo — makes the device harder to fingerprint. Add a floating theme toggle button to the login page so users can switch theme before logging in (cycles auto→light→dark). Replace the four cluttered sidebar footer buttons (theme, download config, reboot, logout) with an always-visible topbar user menu. The dropdown shows the username, three theme options with a checkmark on the active one, download config, reboot, and logout. Refactor all handler page-data structs to embed PageData instead of repeating the four base fields, and add Username (sourced from the request context) so the topbar can display the logged-in user. Polish pass on the login card: spacing, focus styles, button weights. Replace the AES-encrypted-cookie session model with an opaque random token backed by an in-memory map. The vendored design embedded the user's username, password, CSRF, and feature flags into the cookie and persisted the AES key under /var/lib/misc, making the keyfile a passive credential-recovery oracle — anyone who could read it could decrypt any captured cookie and recover the plaintext admin password. Now: cookie is 32 bytes of crypto/rand, base64-url-encoded; sessions live only in process memory; reboot/respawn/upgrade drops every active session and the UI's 401 handler bounces the user to /login. Sliding-window refresh on user activity, janitor goroutine sweeps expired entries. --session-key flag and /var/lib/misc/webui-session.key are gone. Signed-off-by: Joachim Wiberg <troglobit@gmail.com>