41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
|
|
|
|
import { PropertymappingsApi, ScopeMapping } from "@goauthentik/api";
|
|
|
|
const mappingToSelect = (s: ScopeMapping) => [s.pk, s.name, s.name, s];
|
|
|
|
export async function propertyMappingsProvider(page = 1, search = "") {
|
|
const propertyMappings = await new PropertymappingsApi(
|
|
DEFAULT_CONFIG,
|
|
).propertymappingsProviderScopeList({
|
|
ordering: "scope_name",
|
|
pageSize: 20,
|
|
search: search.trim(),
|
|
page,
|
|
});
|
|
return {
|
|
pagination: propertyMappings.pagination,
|
|
options: propertyMappings.results.map(mappingToSelect),
|
|
};
|
|
}
|
|
|
|
export function propertyMappingsSelector(instanceMappings?: string[]) {
|
|
if (!instanceMappings) {
|
|
return async () => [];
|
|
}
|
|
|
|
return async () => {
|
|
const pm = new PropertymappingsApi(DEFAULT_CONFIG);
|
|
const mappings = await Promise.allSettled(
|
|
instanceMappings.map((instanceId) =>
|
|
pm.propertymappingsProviderScopeRetrieve({ pmUuid: instanceId }),
|
|
),
|
|
);
|
|
|
|
return mappings
|
|
.filter((s) => s.status === "fulfilled")
|
|
.map((s) => s.value)
|
|
.map(mappingToSelect);
|
|
};
|
|
}
|