diff --git a/aleksis/apps/alsijil/schema/__init__.py b/aleksis/apps/alsijil/schema/__init__.py
index 037bf93c3bbf5e9e081d95accb3f56469d2ededf..afc8fd8d2c1835b69a9ace6c92d30312faaa665c 100644
--- a/aleksis/apps/alsijil/schema/__init__.py
+++ b/aleksis/apps/alsijil/schema/__init__.py
@@ -6,8 +6,11 @@ from django.db.models.query_utils import Q
 import graphene
 
 from aleksis.apps.cursus.models import Course
+from aleksis.apps.cursus.schema import CourseType
 from aleksis.core.models import Group, Person
 from aleksis.core.schema.base import FilterOrderList
+from aleksis.core.schema.group import GroupType
+from aleksis.core.util.core_helpers import has_person
 
 from ..models import Documentation
 from .documentation import (
@@ -34,6 +37,9 @@ class Query(graphene.ObjectType):
         date_end=graphene.Date(required=True),
     )
 
+    groups_by_person = FilterOrderList(GroupType, person=graphene.ID())
+    courses_of_person = FilterOrderList(CourseType, person=graphene.ID())
+
     def resolve_documentations_by_course_id(root, info, course_id, **kwargs):
         documentations = Documentation.objects.filter(
             Q(course__pk=course_id) | Q(lesson_event__course__pk=course_id)
@@ -72,6 +78,39 @@ class Query(graphene.ObjectType):
             own, datetime_start, datetime_end, info.context, obj_type, obj_id
         )
 
+    @staticmethod
+    def resolve_groups_by_person(root, info, person=None):
+        if person:
+            person = Person.objects.get(pk=person)
+            if not info.context.user.has_perm("core.view_person_rule", person):
+                raise PermissionDenied()
+        elif has_person(info.context.user):
+            person = info.context.user.person
+        else:
+            raise PermissionDenied()
+
+        return Group.objects.filter(
+            Q(members=person) | Q(owners=person) | Q(parent_groups__owners=person)
+        )
+
+    @staticmethod
+    def resolve_courses_of_person(root, info, person=None):
+        if person:
+            person = Person.objects.get(pk=person)
+            if not info.context.user.has_perm("core.view_person_rule", person):
+                raise PermissionDenied()
+        elif has_person(info.context.user):
+            person = info.context.user.person
+        else:
+            raise PermissionDenied()
+
+        return Course.objects.filter(
+            Q(teachers=person)
+            | Q(groups__members=person)
+            | Q(groups__owners=person)
+            | Q(groups__parent_groups__owners=person)
+        )
+
 
 class Mutation(graphene.ObjectType):
     create_documentation = DocumentationCreateMutation.Field()