diff --git a/aleksis/core/schema/__init__.py b/aleksis/core/schema/__init__.py index fd9a930362f7890e62e907f25347500bfb34bd77..2c8358b4536cb71adff44c94e036ce02f8cc6333 100644 --- a/aleksis/core/schema/__init__.py +++ b/aleksis/core/schema/__init__.py @@ -72,6 +72,7 @@ class Query(graphene.ObjectType): person_by_id_or_me = graphene.Field(PersonType, id=graphene.ID()) groups = graphene.List(GroupType) + group_by_id = graphene.Field(GroupType, id=graphene.ID()) who_am_i = graphene.Field(UserType) @@ -144,6 +145,19 @@ class Query(graphene.ObjectType): def resolve_groups(root, info, **kwargs): return get_objects_for_user(info.context.user, "core.view_group", Group) + @staticmethod + def resolve_group_by_id(root, info, id): + group = Group.objects.filter(id=id) + + if len(group) != 1: + return None + + group = group.first() + + if not info.context.user.has_perm("core.view_group", group): + raise PermissionDenied() + return group + def resolve_who_am_i(root, info, **kwargs): return info.context.user