agessaman
34c307ee33
feat(acl): keep an ACL entry's last login across restarts
...
Stored entries now record when they last logged in, so the web UI can
show whether a provisioned grant is still in use after a restart.
Firmware keeps this in RAM only; last_activity still starts at 0 on
load, so "not active since restart" keeps its meaning.
- acl_entries gains a nullable last_login column, added beside the
table's CREATE so a failed earlier migration cannot lock stored
admins out of a load that reads it.
- A login by a stored entry writes its time, best-effort, and not when
the stored second already matches it.
- A guest promoted by setperm keeps its login time; a row taken over
from another identity's label does not inherit that identity's.
- Key changes, renames and label adoption carry the time; a retried
load keeps the later of the live and stored times and writes a login
made while the store was unreadable.
2026-10-02 10:57:24 +01:00
..
2026-09-04 10:42:33 -04:00
2026-10-02 10:57:24 +01:00
2026-10-02 10:57:24 +01:00
2026-08-21 18:56:23 -07:00
2026-09-12 16:29:15 -07:00
2026-10-02 10:48:10 +01:00
2026-09-05 13:04:34 -04:00
2026-07-24 15:52:01 -04:00
2026-07-24 15:52:01 -04:00
2026-09-26 21:44:01 -07:00
2026-09-02 12:05:57 -04:00
2026-09-07 13:05:19 -07:00
2026-07-26 13:04:17 -07:00
2026-09-11 14:32:11 -07:00
2026-09-25 10:20:43 +01:00
2026-09-10 10:22:20 -07:00
2026-09-13 12:13:49 -07:00
2026-09-23 11:27:39 -04:00
2026-09-04 12:13:08 -04:00
2026-09-05 18:20:58 -04:00
2026-09-05 18:20:58 -04:00
2026-09-08 17:31:28 -04:00
2026-09-12 18:30:21 -07:00
2026-09-20 20:29:00 -07:00
2026-09-13 13:38:59 -07:00
2026-09-05 13:11:11 -04:00
2026-10-02 10:48:10 +01:00
2026-10-02 10:48:10 +01:00
2026-10-02 10:48:10 +01:00
2026-07-19 07:11:49 -07:00
2026-09-23 11:27:39 -04:00
2026-09-07 13:39:29 +01:00
2026-07-24 08:24:23 -07:00
2026-07-24 08:24:23 -07:00
2026-08-21 18:56:23 -07:00
2026-09-08 09:29:31 -04:00
2026-07-24 15:29:40 -07:00
2026-09-02 23:14:35 -04:00
2026-08-10 21:42:34 -04:00
2026-09-08 11:22:07 -04:00
2026-08-24 09:00:50 -04:00
2026-10-02 10:48:10 +01:00
2026-09-23 12:17:36 -04:00
2026-07-29 13:17:15 -07:00
2026-09-20 20:40:04 -07:00
2026-08-18 22:33:47 +01:00
2026-09-21 15:56:04 -07:00
2026-09-05 21:56:19 +01:00
2026-09-21 16:22:08 -07:00
2026-10-02 10:48:10 +01:00
2026-07-26 13:04:17 -07:00
2026-09-12 16:53:10 -07:00
2026-09-21 16:03:08 -07:00
2026-09-13 18:39:43 -07:00
2026-09-21 16:31:30 -07:00
2026-09-05 13:04:34 -04:00
2026-09-03 22:16:38 +01:00
2026-09-04 13:08:09 -04:00
2026-09-04 10:39:42 -04:00
2026-09-05 13:04:34 -04:00
2026-09-04 13:08:09 -04:00
2026-09-04 12:13:08 -04:00
2026-09-05 21:56:19 +01:00
2026-09-05 13:04:34 -04:00
2026-09-05 13:04:34 -04:00
2026-09-03 22:16:38 +01:00
2026-09-07 21:29:48 +01:00
2026-09-05 13:15:26 -04:00
2026-09-05 13:04:34 -04:00
2026-09-03 22:16:38 +01:00
2026-09-05 13:04:34 -04:00
2026-08-15 21:44:00 -05:00
2026-08-29 23:46:49 -04:00
2026-08-20 09:40:09 -04:00
2026-09-07 22:27:50 +01:00
2026-09-08 23:36:15 +01:00
2026-08-11 16:14:36 +01:00
2026-10-02 10:48:10 +01:00
2026-09-23 11:27:39 -04:00
2026-10-02 10:48:10 +01:00
2026-10-02 10:48:10 +01:00
2026-09-08 10:26:11 -04:00
2026-09-05 13:15:26 -04:00
2026-08-20 09:40:09 -04:00
2026-09-07 21:29:48 +01:00
2026-09-12 16:29:15 -07:00
2026-07-20 20:59:47 +01:00
2026-09-21 16:31:30 -07:00
2026-09-12 16:53:10 -07:00
2026-09-23 12:17:36 -04:00
2026-10-02 10:57:24 +01:00
2026-09-13 10:45:58 -07:00
2026-09-08 22:26:15 +01:00
2026-09-07 21:29:48 +01:00
2026-09-07 21:29:48 +01:00