diff --git a/aleksis/apps/paweljong/predicates.py b/aleksis/apps/paweljong/predicates.py
index 2ce8686d2bcca3a1c908e265be3b9c45c0153458..1816f377c6605fc719dec4d98408e1120445bbc9 100644
--- a/aleksis/apps/paweljong/predicates.py
+++ b/aleksis/apps/paweljong/predicates.py
@@ -26,3 +26,8 @@ def is_own_registration(user: User, registration: EventRegistration) -> bool:
 def is_organiser(user: User, obj: EventRegistration) -> bool:
     """Predicate which checks if the user is an organiser."""
     return user.person in obj.event.linked_group.owners.all()
+
+@predicate
+def is_event_published(obj: EventRegistration) -> bool:
+    """Predicate which checks if the event is published."""
+    return obj.published
diff --git a/aleksis/apps/paweljong/rules.py b/aleksis/apps/paweljong/rules.py
index 7ad451f75bd2574625ce5ac89230b48ea72b8c3b..f9f69317bed46fef8cbc1039e33748d6f9f6948e 100644
--- a/aleksis/apps/paweljong/rules.py
+++ b/aleksis/apps/paweljong/rules.py
@@ -14,6 +14,7 @@ from .predicates import (
     is_own_registration,
     is_own_voucher,
     is_organiser,
+    is_event_published,
 )
 
 ## Vouchers
@@ -59,6 +60,9 @@ change_event_predicate = has_person & (
 )
 rules.add_perm("paweljong.change_event_rule", change_event_predicate)
 
+# View event
+view_event_predicate = (is_event_published)
+rules.add_perm("paweljong.view_event_rule", view_event_predicate)
 
 # Delete event
 delete_event_predicate = has_person & (
@@ -114,7 +118,7 @@ rules.add_perm("paweljong.view_terms_rule", view_terms_predicate)
 
 # View term
 view_term_predicate = has_person & (
-    has_global_perm("paweljong.view_term") | has_object_perm("paweljong.view_term", Terms)
+    has_global_perm("paweljong.view_term") | has_object_perm("paweljong.view_term")
 )
 rules.add_perm("paweljong.view_term_rule", view_term_predicate)
 
@@ -149,7 +153,7 @@ rules.add_perm("paweljong.view_info_mailings_rule", view_info_mailings_predicate
 
 # View info_mailing
 view_info_mailing_predicate = has_person & (
-    has_global_perm("paweljong.view_info_mailing") | has_object_perm("paweljong.view_info_mailing", Terms)
+    has_global_perm("paweljong.view_info_mailing") | has_object_perm("paweljong.view_info_mailing")
 )
 rules.add_perm("paweljong.view_info_mailing_rule", view_info_mailing_predicate)
 
diff --git a/aleksis/apps/paweljong/views.py b/aleksis/apps/paweljong/views.py
index 6179f3d8cd262ad381000a2f27fb72ca278db699..806b313a36404d698a97dfb4c3e705c054b97784 100644
--- a/aleksis/apps/paweljong/views.py
+++ b/aleksis/apps/paweljong/views.py
@@ -685,12 +685,13 @@ class RegisterEventWizardView(SessionWizardView):
         return redirect("index")
 
 
-class EventFullView(DetailView):
+class EventFullView(PermissionRequiredMixin, DetailView):
 
     model = Event
     slug_field = "slug"
     template_name = "paweljong/event/full.html"
     object_context_name = "event"
+    permission_required = "paweljong.view_event_rule"
 
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)
@@ -700,12 +701,13 @@ class EventFullView(DetailView):
         return context
 
 
-class RegisterEventStart(DetailView):
+class RegisterEventStart(PermissionRequiredMixin, DetailView):
 
     model = Event
     slug_field = "slug"
     template_name = "paweljong/event/register_start.html"
     object_context_name = "event"
+    permission_required = "paweljong.view_event_rule"
 
     def get_context_data(self, **kwargs):
         context = super().get_context_data(**kwargs)