]> git.ipfire.org Git - dbl.git/commitdiff
auth: Log when API keys have been used last
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 2 Mar 2026 18:35:23 +0000 (18:35 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 2 Mar 2026 18:35:23 +0000 (18:35 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/database.sql
src/dbl/auth.py

index 8da740e03e10b81bccce38c8d07bbe82aaa4bdf8..b92c69adff22b96e231a9ab424503f3ae76a63ed 100644 (file)
@@ -2,7 +2,7 @@
 -- PostgreSQL database dump
 --
 
-\restrict WmWKbaDQfA4nBBtkMPZrgKfs3IuS4Rt4OGUXi43GEHyNlWwmMPGfl4UdQKiKmxj
+\restrict JPaknCY0oEioIF0KZXsQxd9k8J4KAoFZnnVs2RpIewZuAAWn2sRSbNubLxxk2P2
 
 -- Dumped from database version 17.7 (Debian 17.7-0+deb13u1)
 -- Dumped by pg_dump version 17.7 (Debian 17.7-0+deb13u1)
@@ -36,7 +36,8 @@ CREATE TABLE public.api_keys (
     deleted_at timestamp with time zone,
     deleted_by text,
     uid text NOT NULL,
-    can_impersonate boolean DEFAULT false NOT NULL
+    can_impersonate boolean DEFAULT false NOT NULL,
+    last_used_at timestamp with time zone
 );
 
 
@@ -683,5 +684,5 @@ ALTER TABLE ONLY public.sources
 -- PostgreSQL database dump complete
 --
 
-\unrestrict WmWKbaDQfA4nBBtkMPZrgKfs3IuS4Rt4OGUXi43GEHyNlWwmMPGfl4UdQKiKmxj
+\unrestrict JPaknCY0oEioIF0KZXsQxd9k8J4KAoFZnnVs2RpIewZuAAWn2sRSbNubLxxk2P2
 
index dbb7fa6d57739a5f4a0d8e8b3d74bd3f53c9cc52..6a80e12f455da35cf7dd27174a211701702e2a7f 100644 (file)
@@ -53,6 +53,9 @@ class Auth(object):
                if key:
                        log.debug("Successfully authenticated %s" % key)
 
+                       # Log as used
+                       await key.used()
+
                return key
 
        async def get_key(self, key):
@@ -177,3 +180,12 @@ class APIKey(sqlmodel.SQLModel, database.BackendMixin, table=True):
        # Permissions
 
        can_impersonate: bool = False
+
+       # Used At
+       used_at: datetime.datetime | None = None
+
+       async def used(self):
+               """
+                       Called when the API key has been used
+               """
+               self.used_at = sqlmodel.func.current_timestamp()