diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py
index b524f2c3bd30cb59f5b37f2309fabb2239184393..7e52d04e137f80870edae358a8ebb5ab663a9824 100644
--- a/aleksis/apps/paweljong/rules.py
+++ b/aleksis/apps/paweljong/rules.py
@@ -55,13 +55,21 @@ rules.add_perm("paweljong.create_vouchers_rule", create_vouchers_predicate)
 
 # View events
 view_events_predicate = has_person & (
-    has_global_perm("paweljong.view_event") | has_any_object("paweljong.view_event", Event)
+    has_global_perm("paweljong.view_event") | has_any_object("paweljong.view_event_rule", Event)
 )
 rules.add_perm("paweljong.view_events_rule", view_events_predicate)
 
+# Edit events
+change_events_predicate = has_person & (
+    has_global_perm("paweljong.change_event") | has_any_object("paweljong.change_event_rule", Event)
+)
+rules.add_perm("paweljong.change_events_rule", change_events_predicate)
+
 # Edit event
 change_event_predicate = has_person & (
-    has_global_perm("paweljong.change_event") | has_object_perm("paweljong.change_event")
+    has_global_perm("paweljong.change_event")
+    | has_object_perm("paweljong.change_event")
+    | is_organiser
 )
 rules.add_perm("paweljong.change_event_rule", change_event_predicate)
 
diff --git a/aleksis/apps/paweljong/templates/paweljong/event/detail.html b/aleksis/apps/paweljong/templates/paweljong/event/detail.html
index 3ea38a295f1bf9183278f6934c5758fd4d62b495..c681c5e6efa58776eaab9ac4bd1117e5258fa243 100644
--- a/aleksis/apps/paweljong/templates/paweljong/event/detail.html
+++ b/aleksis/apps/paweljong/templates/paweljong/event/detail.html
@@ -14,26 +14,23 @@
 {% block content %}
   <h4>{{ event }}</h4>
 
-  {% has_perm 'paweljong.manage_event' user event as can_manage_event %}
-  {% has_perm 'paweljong.event_checkpoint' user event as can_checkpoint %}
+  {% has_perm 'paweljong.change_event_rule' user event as can_change_event_rule %}
+  {% has_perm 'paweljong.event_checkpoint' user event as can_checkpoint_rule %}
 
-  {% if can_manage_event %}
     <p>
-      {% if can_manage_event %}
-        <a href="{% url 'edit_event_by_slug' event.slug %}" class="btn waves-effect waves-light">
-          <i class="material-icons left iconify" data-icon="mdi:edit"></i>
-          {% trans "Edit" %}
-        </a>
-      {% endif %}
-      {% if can_checkpoint %}
-        <a href="{% url 'event_by_name_checkpoint' event.slug %}" class="btn waves-effect waves-light">
-          <i class="material-icons left iconify" data-icon="mdi:access-point-check"></i>
-          {% trans "Checkpoint" %}
-        </a>
-      {% endif %}
-
+     {% if can_change_event_rule %}
+      <a href="{% url 'edit_event_by_slug' event.slug %}" class="btn waves-effect waves-light">
+        <i class="material-icons left iconify" data-icon="mdi:edit"></i>
+        {% trans "Edit" %}
+      </a>
+     {% endif %}
+     {% if can_checkpoint %}
+       <a href="{% url 'event_by_name_checkpoint' event.slug %}" class="btn waves-effect waves-light">
+         <i class="material-icons left iconify" data-icon="mdi:access-point-check"></i>
+         {% trans "Checkpoint" %}
+       </a>
+     {% endif %}
     </p>
-  {% endif %}
 
     <div class="card">
       <div class="card-content">
diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py
index 203bcf43ea9c0324f6d6c61030b415d6a902b771..23a067b5079395d00bd53b1e3d4c2815d34aac1f 100644
--- a/aleksis/apps/paweljong/views.py
+++ b/aleksis/apps/paweljong/views.py
@@ -146,7 +146,7 @@ class EventRegistrationCreateView(PermissionRequiredMixin, AdvancedCreateView):
 
     model = EventRegistration
     form_class = EditEventRegistrationForm
-    permission_required = "paweljong.create_eventregistration_rule"
+    permission_required = "paweljong.create_registration_rule"
     template_name = "paweljong/event_registration/create.html"
     success_url = reverse_lazy("registrations")
     success_message = _("The event registration has been created.")
@@ -158,14 +158,14 @@ class EventRegistrationEditView(PermissionRequiredMixin, AdvancedEditView):
 
     model = EventRegistration
     form_class = EditEventRegistrationForm
-    permission_required = "paweljong.change_eventregistration_rule"
+    permission_required = "paweljong.change_registration_rule"
     template_name = "paweljong/event_registration/edit.html"
     success_url = reverse_lazy("registrations")
     success_message = _("The event registration has been saved.")
 
 
 @permission_required(
-    "paweljong.change_eventregistration_rule",
+    "paweljong.change_registration_rule",
     fn=objectgetter_optional(EventRegistration, None, False),
 )
 def edit_registration(request: HttpRequest, pk) -> HttpResponse:
@@ -896,8 +896,11 @@ class RetractRegistration(PermissionRequiredMixin, View):
 
     permission_required = "paweljong.can_retract_registration_rule"
 
+    def get_object(self, *args, **kwargs):
+        return EventRegistration.objects.get(id=self.kwargs["pk"])
+
     def get(self, *args, **kwargs):
-        registration = EventRegistration.objects.get(id=self.kwargs["pk"])
+        registration = self.get_object()
 
         registration.retract()
         messages.success(self.request, _("Registration successfully retracted."))
@@ -1018,8 +1021,11 @@ class CheckInRegistration(PermissionRequiredMixin, View):
 
     permission_required = "paweljong.change_registration_rule"
 
+    def get_object(self, *args, **kwargs):
+        return EventRegistration.objects.get(id=self.kwargs["pk"])
+
     def get(self, *args, **kwargs):
-        registration = EventRegistration.objects.get(id=self.kwargs["pk"])
+        registration = self.get_object()
 
         try:
             registration.mark_checked_in()
diff --git a/pyproject.toml b/pyproject.toml
index 9a30d4f5ba9932ee0272e4845dc785a35e5fbca6..d135e5bc70036f8ccad271d9df385c398bc5e01f 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "AlekSIS-App-Paweljong"
-version = "1.7.1"
+version = "1.8"
 packages = [
     { include = "aleksis" }
 ]