From f15e770c9243a948ed49b0fe37c993bfbbb42bb0 Mon Sep 17 00:00:00 2001 From: Getslow6 <43093176+Getslow6@users.noreply.github.com> Date: Fri, 24 Jul 2026 10:02:17 +0000 Subject: [PATCH] Parse space and/or comma separated roles + tests --- otterwiki/auth.py | 6 +++++- tests/test_auth_proxy_header.py | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/otterwiki/auth.py b/otterwiki/auth.py index 42667e93..52e2bc12 100644 --- a/otterwiki/auth.py +++ b/otterwiki/auth.py @@ -646,7 +646,11 @@ def __init__( @staticmethod def _parse_roles(roles_str): - return {r.strip().upper() for r in roles_str.split(',') if r.strip()} + return { + r.strip().upper() + for r in re.split(r'[,\s]+', roles_str) + if r.strip() + } def _map_roles_to_permissions(self, header_roles): header_roles = set(header_roles) diff --git a/tests/test_auth_proxy_header.py b/tests/test_auth_proxy_header.py index e846f974..fd81547c 100644 --- a/tests/test_auth_proxy_header.py +++ b/tests/test_auth_proxy_header.py @@ -284,6 +284,9 @@ def test_parse_roles(create_app): ProxyHeaderAuth._parse_roles # pyright: ignore[reportPrivateUsage] ) assert parse_roles("moderator, admin") == {"MODERATOR", "ADMIN"} + assert parse_roles("moderator ,admin") == {"MODERATOR", "ADMIN"} + assert parse_roles("moderator admin") == {"MODERATOR", "ADMIN"} + assert parse_roles("moderator admin") == {"MODERATOR", "ADMIN"} assert parse_roles(" admin ") == {"ADMIN"} assert parse_roles("a,,b, ,c") == {"A", "B", "C"} assert parse_roles("") == set()