import "@goauthentik/admin/groups/GroupForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import "@goauthentik/components/ak-status-label"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import "@goauthentik/elements/forms/ModalForm"; import { PaginatedResponse } from "@goauthentik/elements/table/Table"; import { TableColumn } from "@goauthentik/elements/table/Table"; import { TablePage } from "@goauthentik/elements/table/TablePage"; import "@patternfly/elements/pf-tooltip/pf-tooltip.js"; import { msg } from "@lit/localize"; import { TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { CoreApi, Group } from "@goauthentik/api"; @customElement("ak-group-list") export class GroupListPage extends TablePage { checkbox = true; clearOnRefresh = true; searchEnabled(): boolean { return true; } pageTitle(): string { return msg("Groups"); } pageDescription(): string { return msg("Group users together and give them permissions based on the membership."); } pageIcon(): string { return "pf-icon pf-icon-users"; } @property() order = "name"; async apiEndpoint(): Promise> { return new CoreApi(DEFAULT_CONFIG).coreGroupsList({ ...(await this.defaultEndpointConfig()), includeUsers: false, }); } columns(): TableColumn[] { return [ new TableColumn(msg("Name"), "name"), new TableColumn(msg("Parent"), "parent"), new TableColumn(msg("Members")), new TableColumn(msg("Superuser privileges?")), new TableColumn(msg("Actions")), ]; } renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; return html` { return new CoreApi(DEFAULT_CONFIG).coreGroupsUsedByList({ groupUuid: item.pk, }); }} .delete=${(item: Group) => { return new CoreApi(DEFAULT_CONFIG).coreGroupsDestroy({ groupUuid: item.pk, }); }} > `; } row(item: Group): TemplateResult[] { return [ html`${item.name}`, html`${item.parentName || msg("-")}`, html`${Array.from(item.users || []).length}`, html``, html` ${msg("Update")} ${msg("Update Group")} `, ]; } renderObjectCreate(): TemplateResult { return html` ${msg("Create")} ${msg("Create Group")} `; } } declare global { interface HTMLElementTagNameMap { "ak-group-list": GroupListPage; } }