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:
@ -66,6 +66,7 @@ class KerberosSourceViewSet(UsedByMixin, ModelViewSet):
|
|||||||
serializer_class = KerberosSourceSerializer
|
serializer_class = KerberosSourceSerializer
|
||||||
lookup_field = "slug"
|
lookup_field = "slug"
|
||||||
filterset_fields = [
|
filterset_fields = [
|
||||||
|
"pbm_uuid",
|
||||||
"name",
|
"name",
|
||||||
"slug",
|
"slug",
|
||||||
"enabled",
|
"enabled",
|
||||||
|
|||||||
@ -110,6 +110,7 @@ class LDAPSourceViewSet(UsedByMixin, ModelViewSet):
|
|||||||
serializer_class = LDAPSourceSerializer
|
serializer_class = LDAPSourceSerializer
|
||||||
lookup_field = "slug"
|
lookup_field = "slug"
|
||||||
filterset_fields = [
|
filterset_fields = [
|
||||||
|
"pbm_uuid",
|
||||||
"name",
|
"name",
|
||||||
"slug",
|
"slug",
|
||||||
"enabled",
|
"enabled",
|
||||||
|
|||||||
@ -152,6 +152,7 @@ class OAuthSourceFilter(FilterSet):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = OAuthSource
|
model = OAuthSource
|
||||||
fields = [
|
fields = [
|
||||||
|
"pbm_uuid",
|
||||||
"name",
|
"name",
|
||||||
"slug",
|
"slug",
|
||||||
"enabled",
|
"enabled",
|
||||||
|
|||||||
@ -52,6 +52,7 @@ class PlexSourceViewSet(UsedByMixin, ModelViewSet):
|
|||||||
serializer_class = PlexSourceSerializer
|
serializer_class = PlexSourceSerializer
|
||||||
lookup_field = "slug"
|
lookup_field = "slug"
|
||||||
filterset_fields = [
|
filterset_fields = [
|
||||||
|
"pbm_uuid",
|
||||||
"name",
|
"name",
|
||||||
"slug",
|
"slug",
|
||||||
"enabled",
|
"enabled",
|
||||||
|
|||||||
@ -44,6 +44,7 @@ class SAMLSourceViewSet(UsedByMixin, ModelViewSet):
|
|||||||
serializer_class = SAMLSourceSerializer
|
serializer_class = SAMLSourceSerializer
|
||||||
lookup_field = "slug"
|
lookup_field = "slug"
|
||||||
filterset_fields = [
|
filterset_fields = [
|
||||||
|
"pbm_uuid",
|
||||||
"name",
|
"name",
|
||||||
"slug",
|
"slug",
|
||||||
"enabled",
|
"enabled",
|
||||||
|
|||||||
@ -53,6 +53,6 @@ class SCIMSourceViewSet(UsedByMixin, ModelViewSet):
|
|||||||
queryset = SCIMSource.objects.all()
|
queryset = SCIMSource.objects.all()
|
||||||
serializer_class = SCIMSourceSerializer
|
serializer_class = SCIMSourceSerializer
|
||||||
lookup_field = "slug"
|
lookup_field = "slug"
|
||||||
filterset_fields = ["name", "slug"]
|
filterset_fields = ["pbm_uuid", "name", "slug"]
|
||||||
search_fields = ["name", "slug", "token__identifier", "token__user__username"]
|
search_fields = ["name", "slug", "token__identifier", "token__user__username"]
|
||||||
ordering = ["name"]
|
ordering = ["name"]
|
||||||
|
|||||||
30
schema.yml
30
schema.yml
@ -26248,6 +26248,11 @@ paths:
|
|||||||
name: password_login_update_internal_password
|
name: password_login_update_internal_password
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
- in: query
|
||||||
|
name: pbm_uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
- in: query
|
- in: query
|
||||||
name: realm
|
name: realm
|
||||||
schema:
|
schema:
|
||||||
@ -26620,6 +26625,11 @@ paths:
|
|||||||
name: password_login_update_internal_password
|
name: password_login_update_internal_password
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
|
- in: query
|
||||||
|
name: pbm_uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
- in: query
|
- in: query
|
||||||
name: peer_certificate
|
name: peer_certificate
|
||||||
schema:
|
schema:
|
||||||
@ -27049,6 +27059,11 @@ paths:
|
|||||||
description: Number of results to return per page.
|
description: Number of results to return per page.
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
|
- in: query
|
||||||
|
name: pbm_uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
- in: query
|
- in: query
|
||||||
name: policy_engine_mode
|
name: policy_engine_mode
|
||||||
schema:
|
schema:
|
||||||
@ -27418,6 +27433,11 @@ paths:
|
|||||||
description: Number of results to return per page.
|
description: Number of results to return per page.
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
|
- in: query
|
||||||
|
name: pbm_uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
- in: query
|
- in: query
|
||||||
name: policy_engine_mode
|
name: policy_engine_mode
|
||||||
schema:
|
schema:
|
||||||
@ -27821,6 +27841,11 @@ paths:
|
|||||||
description: Number of results to return per page.
|
description: Number of results to return per page.
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
|
- in: query
|
||||||
|
name: pbm_uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
- in: query
|
- in: query
|
||||||
name: policy_engine_mode
|
name: policy_engine_mode
|
||||||
schema:
|
schema:
|
||||||
@ -28184,6 +28209,11 @@ paths:
|
|||||||
description: Number of results to return per page.
|
description: Number of results to return per page.
|
||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
|
- in: query
|
||||||
|
name: pbm_uuid
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
- name: search
|
- name: search
|
||||||
required: false
|
required: false
|
||||||
in: query
|
in: query
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { DualSelectPair } from "@goauthentik/elements/ak-dual-select/types";
|
|||||||
import { OAuthSource, SourcesApi } from "@goauthentik/api";
|
import { OAuthSource, SourcesApi } from "@goauthentik/api";
|
||||||
|
|
||||||
const sourceToSelect = (source: OAuthSource) => [
|
const sourceToSelect = (source: OAuthSource) => [
|
||||||
source.slug,
|
source.pk,
|
||||||
`${source.name} (${source.slug})`,
|
`${source.name} (${source.slug})`,
|
||||||
source.name,
|
source.name,
|
||||||
source,
|
source,
|
||||||
@ -37,13 +37,15 @@ export function oauth2SourcesSelector(instanceMappings?: string[]) {
|
|||||||
const oauthSources = new SourcesApi(DEFAULT_CONFIG);
|
const oauthSources = new SourcesApi(DEFAULT_CONFIG);
|
||||||
const mappings = await Promise.allSettled(
|
const mappings = await Promise.allSettled(
|
||||||
instanceMappings.map((instanceId) =>
|
instanceMappings.map((instanceId) =>
|
||||||
oauthSources.sourcesOauthRetrieve({ slug: instanceId }),
|
oauthSources.sourcesOauthList({ pbmUuid: instanceId }),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
return mappings
|
return mappings
|
||||||
.filter((s) => s.status === "fulfilled")
|
.filter((s) => s.status === "fulfilled")
|
||||||
.map((s) => s.value)
|
.map((s) => s.value)
|
||||||
|
.filter((s) => s.pagination.count > 0)
|
||||||
|
.map((s) => s.results[0])
|
||||||
.map(sourceToSelect);
|
.map(sourceToSelect);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user