From 8db34fc65b42207f33678ca34dbe9ec6b1c1dc9c Mon Sep 17 00:00:00 2001 From: Jens L Date: Wed, 22 Nov 2023 20:53:10 +0100 Subject: [PATCH] events: include user agent in events (#7693) * events: include user agent in events Signed-off-by: Jens Langhammer * fix tests Signed-off-by: Jens Langhammer --------- Signed-off-by: Jens Langhammer --- authentik/events/models.py | 1 + authentik/events/tests/test_event.py | 12 +++++++++++- .../stages/authenticator_validate/tests/test_duo.py | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/authentik/events/models.py b/authentik/events/models.py index 4b245e49f..c43128419 100644 --- a/authentik/events/models.py +++ b/authentik/events/models.py @@ -217,6 +217,7 @@ class Event(SerializerModel, ExpiringModel): "path": request.path, "method": request.method, "args": cleanse_dict(QueryDict(request.META.get("QUERY_STRING", ""))), + "user_agent": request.META.get("HTTP_USER_AGENT", ""), } # Special case for events created during flow execution # since they keep the http query within a wrapped query diff --git a/authentik/events/tests/test_event.py b/authentik/events/tests/test_event.py index 4d636e9b2..3019d5bae 100644 --- a/authentik/events/tests/test_event.py +++ b/authentik/events/tests/test_event.py @@ -53,7 +53,15 @@ class TestEvents(TestCase): """Test plain from_http""" event = Event.new("unittest").from_http(self.factory.get("/")) self.assertEqual( - event.context, {"http_request": {"args": {}, "method": "GET", "path": "/"}} + event.context, + { + "http_request": { + "args": {}, + "method": "GET", + "path": "/", + "user_agent": "", + } + }, ) def test_from_http_clean_querystring(self): @@ -67,6 +75,7 @@ class TestEvents(TestCase): "args": {"token": SafeExceptionReporterFilter.cleansed_substitute}, "method": "GET", "path": "/", + "user_agent": "", } }, ) @@ -83,6 +92,7 @@ class TestEvents(TestCase): "args": {"token": SafeExceptionReporterFilter.cleansed_substitute}, "method": "GET", "path": "/", + "user_agent": "", } }, ) diff --git a/authentik/stages/authenticator_validate/tests/test_duo.py b/authentik/stages/authenticator_validate/tests/test_duo.py index 22d1fe746..1f3edb62e 100644 --- a/authentik/stages/authenticator_validate/tests/test_duo.py +++ b/authentik/stages/authenticator_validate/tests/test_duo.py @@ -184,6 +184,7 @@ class AuthenticatorValidateStageDuoTests(FlowTestCase): "args": {}, "method": "GET", "path": f"/api/v3/flows/executor/{flow.slug}/", + "user_agent": "", }, }, )