diff --git a/authentik/core/api/providers.py b/authentik/core/api/providers.py index b1716e8f2b..76696c3a0d 100644 --- a/authentik/core/api/providers.py +++ b/authentik/core/api/providers.py @@ -63,8 +63,12 @@ class ProviderFilter(FilterSet): """Filter for providers""" application__isnull = BooleanFilter(method="filter_application__isnull") - backchannel_only = BooleanFilter( - method="filter_backchannel_only", + backchannel = BooleanFilter( + method="filter_backchannel", + label=_( + "When not set all providers are returned. When set to true, only backchannel " + "providers are returned. When set to false, backchannel providers are excluded" + ), ) def filter_application__isnull(self, queryset: QuerySet, name, value): @@ -75,8 +79,9 @@ class ProviderFilter(FilterSet): | Q(application__isnull=value) ) - def filter_backchannel_only(self, queryset: QuerySet, name, value): - """Only return backchannel providers""" + def filter_backchannel(self, queryset: QuerySet, name, value): + """By default all providers are returned. When set to true, only backchannel providers are + returned. When set to false, backchannel providers are excluded""" return queryset.filter(is_backchannel=value) diff --git a/schema.yml b/schema.yml index 1b88abae1f..7b773ad067 100644 --- a/schema.yml +++ b/schema.yml @@ -15739,9 +15739,12 @@ paths: schema: type: boolean - in: query - name: backchannel_only + name: backchannel schema: type: boolean + description: When not set all providers are returned. When set to true, only + backchannel providers are returned. When set to false, backchannel providers + are excluded - name: ordering required: false in: query diff --git a/web/src/admin/admin-overview/charts/SyncStatusChart.ts b/web/src/admin/admin-overview/charts/SyncStatusChart.ts index 1ca5ba112b..aed6315fab 100644 --- a/web/src/admin/admin-overview/charts/SyncStatusChart.ts +++ b/web/src/admin/admin-overview/charts/SyncStatusChart.ts @@ -18,7 +18,7 @@ export interface SummarizedSyncStatus { } @customElement("ak-admin-status-chart-sync") -export class LDAPSyncStatusChart extends AKChart { +export class SyncStatusChart extends AKChart { getChartType(): string { return "doughnut"; } @@ -102,6 +102,19 @@ export class LDAPSyncStatusChart extends AKChart { }, msg("Google Workspace Provider"), ), + await this.fetchStatus( + () => { + return new ProvidersApi(DEFAULT_CONFIG).providersMicrosoftEntraList(); + }, + (element) => { + return new ProvidersApi( + DEFAULT_CONFIG, + ).providersMicrosoftEntraSyncStatusRetrieve({ + id: element.pk, + }); + }, + msg("Microsoft Entra Provider"), + ), await this.fetchStatus( () => { return new SourcesApi(DEFAULT_CONFIG).sourcesLdapList(); diff --git a/web/src/admin/applications/ProviderSelectModal.ts b/web/src/admin/applications/ProviderSelectModal.ts index 02367f0dd7..1f9a056e18 100644 --- a/web/src/admin/applications/ProviderSelectModal.ts +++ b/web/src/admin/applications/ProviderSelectModal.ts @@ -21,7 +21,7 @@ export class ProviderSelectModal extends TableModal { } @property({ type: Boolean }) - backchannelOnly = false; + backchannel?: boolean; @property() confirm!: (selectedItems: Provider[]) => Promise; @@ -34,7 +34,7 @@ export class ProviderSelectModal extends TableModal { page: page, pageSize: (await uiConfig()).pagination.perPage, search: this.search || "", - backchannelOnly: this.backchannelOnly, + backchannel: this.backchannel, }); } diff --git a/web/src/admin/applications/components/ak-backchannel-input.ts b/web/src/admin/applications/components/ak-backchannel-input.ts index 833a688fbb..0554317ab3 100644 --- a/web/src/admin/applications/components/ak-backchannel-input.ts +++ b/web/src/admin/applications/components/ak-backchannel-input.ts @@ -64,7 +64,7 @@ export class AkBackchannelProvidersInput extends AKElement { return html`
- +