Skip to content

Commit ea1e2d3

Browse files
authored
fix: wrong page permission filtering for element (baserow#5319)
1 parent 63a72ee commit ea1e2d3

4 files changed

Lines changed: 191 additions & 311 deletions

File tree

backend/src/baserow/contrib/builder/elements/permission_manager.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,9 @@
1717
User = get_user_model()
1818

1919

20-
# For now there can be up to three levels of nested elements.
21-
# E.g. a RepeatElement might contain a ColumnElement, which might contain a
22-
# HeadingElement.
23-
# However, later this number could be dynamic depending on the page itself.
24-
MAX_ELEMENT_NESTING_DEPTH = 3
20+
# Later this number could be dynamic but for now we set it arbitrary
21+
# high enough to cover most usages.
22+
MAX_ELEMENT_NESTING_DEPTH = 9
2523

2624

2725
class ElementVisibilityPermissionManager(PermissionManagerType):
@@ -182,11 +180,13 @@ def exclude_elements_with_page_visibility(
182180
return queryset.exclude(page__visibility=Page.VISIBILITY_TYPES.LOGGED_IN)
183181

184182
return queryset.exclude(
185-
page__role_type=Page.ROLE_TYPES.ALLOW_ALL_EXCEPT,
186-
page__roles__contains=actor.role,
183+
Q(page__visibility=Page.VISIBILITY_TYPES.LOGGED_IN)
184+
& Q(page__role_type=Page.ROLE_TYPES.ALLOW_ALL_EXCEPT)
185+
& Q(page__roles__contains=[actor.role])
187186
).exclude(
188-
Q(page__role_type=Page.ROLE_TYPES.DISALLOW_ALL_EXCEPT)
189-
& ~Q(page__roles__contains=actor.role),
187+
Q(page__visibility=Page.VISIBILITY_TYPES.LOGGED_IN)
188+
& Q(page__role_type=Page.ROLE_TYPES.DISALLOW_ALL_EXCEPT)
189+
& ~Q(page__roles__contains=[actor.role]),
190190
)
191191

192192
def exclude_elements_with_visibility(

0 commit comments

Comments
 (0)