diff --git a/authentik/core/api/groups.py b/authentik/core/api/groups.py index 82afbdef779c..95b87a868934 100644 --- a/authentik/core/api/groups.py +++ b/authentik/core/api/groups.py @@ -228,6 +228,19 @@ class UserAccountSerializer(PassiveSerializer): filterset_class = GroupFilter ordering = ["name"] + def get_ql_fields(self): + from djangoql.schema import BoolField, StrField + + from authentik.enterprise.search.fields import ( + JSONSearchField, + ) + + return [ + StrField(Group, "name"), + BoolField(Group, "is_superuser", nullable=True), + JSONSearchField(Group, "attributes", suggest_nested=False), + ] + def get_queryset(self): base_qs = Group.objects.all().select_related("parent").prefetch_related("roles") diff --git a/web/src/admin/groups/GroupListPage.ts b/web/src/admin/groups/GroupListPage.ts index 921e340a0bde..79dbf6e1897c 100644 --- a/web/src/admin/groups/GroupListPage.ts +++ b/web/src/admin/groups/GroupListPage.ts @@ -29,6 +29,7 @@ export class GroupListPage extends TablePage { "Group users together and give them permissions based on the membership.", ); public pageIcon = "pf-icon pf-icon-users"; + public supportsQL = true; @property() order = "name"; diff --git a/web/src/admin/groups/MemberSelectModal.ts b/web/src/admin/groups/MemberSelectModal.ts index a97e4f98cb12..d3928f543423 100644 --- a/web/src/admin/groups/MemberSelectModal.ts +++ b/web/src/admin/groups/MemberSelectModal.ts @@ -37,6 +37,7 @@ export class MemberSelectTable extends TableModal { } `, ]; + public supportsQL = true; checkbox = true; checkboxChip = true; diff --git a/web/src/admin/users/GroupSelectModal.ts b/web/src/admin/users/GroupSelectModal.ts index 76191bad2aa0..9ede11aa10bb 100644 --- a/web/src/admin/users/GroupSelectModal.ts +++ b/web/src/admin/users/GroupSelectModal.ts @@ -21,6 +21,7 @@ export class GroupSelectModal extends TableModal { checkboxChip = true; protected override searchEnabled = true; + public supportsQL = true; @property() confirm!: (selectedItems: Group[]) => Promise;