♻️(backend) extract forbidden permission fields from the serializer

These fields previously triggered a suspicious operation exception
when passed to the API.

Make the list configurable so the serializer behavior can be
adjusted without requiring a new release.
This commit is contained in:
lebaudantoine
2026-03-02 14:01:07 +01:00
committed by aleb_the_flash
parent bfbf253033
commit 720eb6a93e
2 changed files with 8 additions and 1 deletions

View File

@@ -2,6 +2,7 @@
# pylint: disable=abstract-method,no-name-in-module # pylint: disable=abstract-method,no-name-in-module
from django.conf import settings
from django.core.exceptions import SuspiciousOperation from django.core.exceptions import SuspiciousOperation
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@@ -318,7 +319,7 @@ class UpdateParticipantSerializer(BaseParticipantsManagementSerializer):
suspicious_fields = [ suspicious_fields = [
field field
for field in ("hidden", "recorder", "agent") for field in settings.PARTICIPANT_FORBIDDEN_PERMISSION_FIELDS
if getattr(permission, field) is not None if getattr(permission, field) is not None
] ]
if suspicious_fields: if suspicious_fields:

View File

@@ -596,6 +596,12 @@ class Base(Configuration):
ALLOW_UNREGISTERED_ROOMS = values.BooleanValue( ALLOW_UNREGISTERED_ROOMS = values.BooleanValue(
True, environ_name="ALLOW_UNREGISTERED_ROOMS", environ_prefix=None True, environ_name="ALLOW_UNREGISTERED_ROOMS", environ_prefix=None
) )
# if provided, treat as suspicious (possible privilege escalation attempt).
PARTICIPANT_FORBIDDEN_PERMISSION_FIELDS = values.ListValue(
["hidden", "recorder", "agent"],
environ_name="PARTICIPANT_FORBIDDEN_PERMISSION_FIELDS",
environ_prefix=None,
)
# Recording settings # Recording settings
RECORDING_ENABLE = values.BooleanValue( RECORDING_ENABLE = values.BooleanValue(