diff --git a/aleksis/core/schema/__init__.py b/aleksis/core/schema/__init__.py
index 9a38928fc290d9b5858188156e106d0eb8c191ee..63ad68ff12fa338ac0abbbc7714dec614ef89d0c 100644
--- a/aleksis/core/schema/__init__.py
+++ b/aleksis/core/schema/__init__.py
@@ -74,6 +74,7 @@ class Query(graphene.ObjectType):
 
     groups = graphene.List(GroupType)
     group_by_id = graphene.Field(GroupType, id=graphene.ID())
+    groups_by_owner = FilterOrderList(GroupType, owner=graphene.ID())
 
     who_am_i = graphene.Field(UserType)
 
@@ -154,6 +155,20 @@ class Query(graphene.ObjectType):
                 raise PermissionDenied()
             return group
 
+    @staticmethod
+    def resolve_groups_by_owner(root, info, owner=None):
+        if owner:
+            owner = Person.objects.get(pk=owner)
+            if not info.context.user.has_perm("core.view_person_rule", owner):
+                raise PermissionDenied()
+
+        elif has_person(info.context.user):
+            owner = info.context.user.person
+        else:
+            raise PermissionDenied()
+
+        return owner.owner_of.all()
+
     def resolve_who_am_i(root, info, **kwargs):
         return info.context.user