diff --git a/aleksis/apps/alsijil/rules.py b/aleksis/apps/alsijil/rules.py
index 065c9c95c607271eb7ec814c171fe2a9f381063c..5e17f1cb7c9b75252eb9744a652441d0ca0f08e8 100644
--- a/aleksis/apps/alsijil/rules.py
+++ b/aleksis/apps/alsijil/rules.py
@@ -142,6 +142,10 @@ add_perm("alsijil.view_full_register", view_full_register_predicate)
 view_my_students_predicate = has_person & is_teacher
 add_perm("alsijil.view_my_students", view_my_students_predicate)
 
+# View groups list
+view_my_groups_predicate = has_person & is_teacher
+add_perm("alsijil.view_my_groups", view_my_groups_predicate)
+
 # View person overview
 view_person_overview_predicate = has_person & (
     is_current_person | is_person_group_owner
diff --git a/aleksis/apps/alsijil/views.py b/aleksis/apps/alsijil/views.py
index e36fc6230ed286f3771e9a215a2229201e35436f..99f69d86d040ccbca436e8d5baac149328053624 100644
--- a/aleksis/apps/alsijil/views.py
+++ b/aleksis/apps/alsijil/views.py
@@ -485,6 +485,8 @@ def my_students(request: HttpRequest) -> HttpResponse:
     context["persons"] = persons
     return render(request, "alsijil/class_register/persons.html", context)
 
+
+@permission_required("alsijil.view_my_groups",)
 def my_groups(request: HttpRequest) -> HttpResponse:
     context = {}
     groups = (