import "@goauthentik/admin/applications/ApplicationWizardHint"; import "@goauthentik/admin/providers/ProviderWizard"; import "@goauthentik/admin/providers/ldap/LDAPProviderForm"; import "@goauthentik/admin/providers/oauth2/OAuth2ProviderForm"; import "@goauthentik/admin/providers/proxy/ProxyProviderForm"; import "@goauthentik/admin/providers/radius/RadiusProviderForm"; import "@goauthentik/admin/providers/saml/SAMLProviderForm"; import "@goauthentik/admin/providers/scim/SCIMProviderForm"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { uiConfig } from "@goauthentik/common/ui/config"; import "@goauthentik/elements/buttons/SpinnerButton"; import "@goauthentik/elements/forms/DeleteBulkForm"; import "@goauthentik/elements/forms/ModalForm"; import "@goauthentik/elements/forms/ProxyForm"; 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, str } from "@lit/localize"; import { TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { Provider, ProvidersApi } from "@goauthentik/api"; @customElement("ak-provider-list") export class ProviderListPage extends TablePage { searchEnabled(): boolean { return true; } pageTitle(): string { return msg("Providers"); } pageDescription(): string { return msg("Provide support for protocols like SAML and OAuth to assigned applications."); } pageIcon(): string { return "pf-icon pf-icon-integration"; } checkbox = true; @property() order = "name"; async apiEndpoint(page: number): Promise> { return new ProvidersApi(DEFAULT_CONFIG).providersAllList({ ordering: this.order, page: page, pageSize: (await uiConfig()).pagination.perPage, search: this.search || "", }); } columns(): TableColumn[] { return [ new TableColumn(msg("Name"), "name"), new TableColumn(msg("Application")), new TableColumn(msg("Type")), new TableColumn(msg("Actions")), ]; } renderSectionBefore(): TemplateResult { return html``; } renderToolbarSelected(): TemplateResult { const disabled = this.selectedElements.length < 1; return html` { return new ProvidersApi(DEFAULT_CONFIG).providersAllUsedByList({ id: item.pk, }); }} .delete=${(item: Provider) => { return new ProvidersApi(DEFAULT_CONFIG).providersAllDestroy({ id: item.pk, }); }} > `; } rowApp(item: Provider): TemplateResult { if (item.assignedApplicationName) { return html` ${msg("Assigned to application ")} ${item.assignedApplicationName}`; } if (item.assignedBackchannelApplicationName) { return html` ${msg("Assigned to application (backchannel) ")} ${item.assignedBackchannelApplicationName}`; } return html` ${msg( "Warning: Provider not assigned to any application.", )}`; } row(item: Provider): TemplateResult[] { return [ html` ${item.name} `, this.rowApp(item), html`${item.verboseName}`, html` ${msg("Update")} ${msg(str`Update ${item.verboseName}`)} `, ]; } renderObjectCreate(): TemplateResult { return html` `; } }