import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import "@goauthentik/elements/ak-dual-select/ak-dual-select-dynamic-selected-provider.js"; import "@goauthentik/elements/forms/FormGroup"; import "@goauthentik/elements/forms/HorizontalFormElement"; import "@goauthentik/elements/forms/Radio"; import "@goauthentik/elements/forms/SearchSelect"; import { msg } from "@lit/localize"; import { html } from "lit"; import { ifDefined } from "lit/directives/if-defined.js"; import { CompatibilityModeEnum, CoreApi, CoreGroupsListRequest, Group, SCIMProvider, ValidationError, } from "@goauthentik/api"; import { propertyMappingsProvider, propertyMappingsSelector } from "./SCIMProviderFormHelpers.js"; export function renderForm(provider?: Partial, errors: ValidationError = {}) { return html` ${msg("Protocol settings")}

${msg( "When enabled, mutating requests will be dropped and logged instead.", )}

${msg("User filtering")}
=> { const args: CoreGroupsListRequest = { ordering: "name", includeUsers: false, }; if (query !== undefined) { args.search = query; } const groups = await new CoreApi(DEFAULT_CONFIG).coreGroupsList(args); return groups.results; }} .renderElement=${(group: Group): string => { return group.name; }} .value=${(group: Group | undefined): string | undefined => { return group ? group.pk : undefined; }} .selected=${(group: Group): boolean => { return group.pk === provider?.filterGroup; }} blankable >

${msg("Only sync users within the selected group.")}

${msg("Attribute mapping")}

${msg("Property mappings used to user mapping.")}

${msg("Property mappings used to group creation.")}

`; }