lib/expression: use literal fallback in ak_obj_attr (#25414)

* fix: use literal fallback in ak_obj_attr

* fix: use literal fallback in ak_obj_attr

* fix check

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
Co-authored-by: ace2016 <ace2016@users.noreply.github.com>
Co-authored-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
Anslem
2026-08-25 13:24:19 +01:00
committed by GitHub
parent 9e4fffccf6
commit 939631bbd5
2 changed files with 13 additions and 2 deletions

View File

@@ -174,8 +174,8 @@ class BaseEvaluator:
return fallback value."""
attrs = getattr(obj, "attributes", {})
value = get_path_from_dict(attrs, attr_key)
if value is None and fallback:
return getattr(obj, fallback)
if value is None and fallback is not None:
return getattr(obj, fallback, fallback)
return value
def expr_event_create(self, action: str, **kwargs):

View File

@@ -39,6 +39,17 @@ class TestEvaluator(TestCase):
"""Test expr_is_group_member"""
self.assertFalse(BaseEvaluator.expr_is_group_member(create_test_admin_user(), name="test"))
def test_expr_obj_attr(self):
"""Test expr_obj_attr"""
user = create_test_user()
user.attributes = {"locale": "en-US"}
self.assertEqual(BaseEvaluator.expr_obj_attr(user, "locale", "en-GB"), "en-US")
self.assertEqual(BaseEvaluator.expr_obj_attr(user, "missing", "username"), user.username)
self.assertEqual(BaseEvaluator.expr_obj_attr(user, "missing", "en-GB"), "en-GB")
self.assertEqual(BaseEvaluator.expr_obj_attr(user, "missing", ""), "")
self.assertIsNone(BaseEvaluator.expr_obj_attr(user, "missing"))
def test_expr_event_create(self):
"""Test expr_event_create"""
evaluator = BaseEvaluator(generate_id())