From ea8ae583b625875f6e848ac86dbbbe78b99547eb Mon Sep 17 00:00:00 2001
From: Tom Teichler <tom.teichler@teckids.org>
Date: Tue, 8 Mar 2022 15:50:41 +0100
Subject: [PATCH] Check if person is organiser

---
 aleksis/apps/paweljong/menus.py      |  2 +-
 aleksis/apps/paweljong/predicates.py | 11 +++++++++++
 aleksis/apps/paweljong/rules.py      |  1 +
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/aleksis/apps/paweljong/menus.py b/aleksis/apps/paweljong/menus.py
index 149cd54..7b4986e 100644
--- a/aleksis/apps/paweljong/menus.py
+++ b/aleksis/apps/paweljong/menus.py
@@ -95,7 +95,7 @@ MENUS = {
                     "validators": [
                         (
                             "aleksis.core.util.predicates.permission_validator",
-                            "paweljong.view_registrations_rule",
+                            "paweljong.manage_registrations",
                         )
                     ],
                 },
diff --git a/aleksis/apps/paweljong/predicates.py b/aleksis/apps/paweljong/predicates.py
index 7288954..0416582 100644
--- a/aleksis/apps/paweljong/predicates.py
+++ b/aleksis/apps/paweljong/predicates.py
@@ -36,3 +36,14 @@ def is_own_voucher(user: User, voucher: Voucher) -> bool:
 def is_own_registration(user: User, registration: EventRegistration) -> bool:
     """Predicate which checks if the registration belongs to the user."""
     return registration.person == user.person
+
+
+@predicate
+def is_organiser(user: User, registration: EventRegistration) -> bool:
+    """Predicate which checks if the registration belongs to the user."""
+    return user.person in registration.event.owners.all()
+
+@predicate
+def is_participant(user: User, registration: EventRegistration) -> bool:
+    """Predicate which checks if the registration belongs to the user."""
+    return user.person in registration.event.members.all()
diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py
index 056af3d..d48d829 100644
--- a/aleksis/apps/paweljong/rules.py
+++ b/aleksis/apps/paweljong/rules.py
@@ -86,6 +86,7 @@ rules.add_perm("paweljong.view_registrations_rule", view_registrations_predicate
 # Manage registrations
 manage_registrations_predicate = has_person & (
     has_global_perm("paweljong.manage_registration")
+    | is_organiser
     | is_own_registration
     | has_any_object("paweljong.manage_registration", EventRegistration)
 )
-- 
GitLab