sources: allow uuid or slug to be used for retrieving a source (#12780)

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
Jens L.
2025-01-23 12:26:58 +01:00
committed by GitHub
parent ce7e539f59
commit 1ce3dfd17f
8 changed files with 40 additions and 3 deletions

View File

@ -66,6 +66,7 @@ class KerberosSourceViewSet(UsedByMixin, ModelViewSet):
serializer_class = KerberosSourceSerializer
lookup_field = "slug"
filterset_fields = [
"pbm_uuid",
"name",
"slug",
"enabled",

View File

@ -110,6 +110,7 @@ class LDAPSourceViewSet(UsedByMixin, ModelViewSet):
serializer_class = LDAPSourceSerializer
lookup_field = "slug"
filterset_fields = [
"pbm_uuid",
"name",
"slug",
"enabled",

View File

@ -152,6 +152,7 @@ class OAuthSourceFilter(FilterSet):
class Meta:
model = OAuthSource
fields = [
"pbm_uuid",
"name",
"slug",
"enabled",

View File

@ -52,6 +52,7 @@ class PlexSourceViewSet(UsedByMixin, ModelViewSet):
serializer_class = PlexSourceSerializer
lookup_field = "slug"
filterset_fields = [
"pbm_uuid",
"name",
"slug",
"enabled",

View File

@ -44,6 +44,7 @@ class SAMLSourceViewSet(UsedByMixin, ModelViewSet):
serializer_class = SAMLSourceSerializer
lookup_field = "slug"
filterset_fields = [
"pbm_uuid",
"name",
"slug",
"enabled",

View File

@ -53,6 +53,6 @@ class SCIMSourceViewSet(UsedByMixin, ModelViewSet):
queryset = SCIMSource.objects.all()
serializer_class = SCIMSourceSerializer
lookup_field = "slug"
filterset_fields = ["name", "slug"]
filterset_fields = ["pbm_uuid", "name", "slug"]
search_fields = ["name", "slug", "token__identifier", "token__user__username"]
ordering = ["name"]

View File

@ -26248,6 +26248,11 @@ paths:
name: password_login_update_internal_password
schema:
type: boolean
- in: query
name: pbm_uuid
schema:
type: string
format: uuid
- in: query
name: realm
schema:
@ -26620,6 +26625,11 @@ paths:
name: password_login_update_internal_password
schema:
type: boolean
- in: query
name: pbm_uuid
schema:
type: string
format: uuid
- in: query
name: peer_certificate
schema:
@ -27049,6 +27059,11 @@ paths:
description: Number of results to return per page.
schema:
type: integer
- in: query
name: pbm_uuid
schema:
type: string
format: uuid
- in: query
name: policy_engine_mode
schema:
@ -27418,6 +27433,11 @@ paths:
description: Number of results to return per page.
schema:
type: integer
- in: query
name: pbm_uuid
schema:
type: string
format: uuid
- in: query
name: policy_engine_mode
schema:
@ -27821,6 +27841,11 @@ paths:
description: Number of results to return per page.
schema:
type: integer
- in: query
name: pbm_uuid
schema:
type: string
format: uuid
- in: query
name: policy_engine_mode
schema:
@ -28184,6 +28209,11 @@ paths:
description: Number of results to return per page.
schema:
type: integer
- in: query
name: pbm_uuid
schema:
type: string
format: uuid
- name: search
required: false
in: query

View File

@ -4,7 +4,7 @@ import { DualSelectPair } from "@goauthentik/elements/ak-dual-select/types";
import { OAuthSource, SourcesApi } from "@goauthentik/api";
const sourceToSelect = (source: OAuthSource) => [
source.slug,
source.pk,
`${source.name} (${source.slug})`,
source.name,
source,
@ -37,13 +37,15 @@ export function oauth2SourcesSelector(instanceMappings?: string[]) {
const oauthSources = new SourcesApi(DEFAULT_CONFIG);
const mappings = await Promise.allSettled(
instanceMappings.map((instanceId) =>
oauthSources.sourcesOauthRetrieve({ slug: instanceId }),
oauthSources.sourcesOauthList({ pbmUuid: instanceId }),
),
);
return mappings
.filter((s) => s.status === "fulfilled")
.map((s) => s.value)
.filter((s) => s.pagination.count > 0)
.map((s) => s.results[0])
.map(sourceToSelect);
};
}