import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import { SentryIgnoredError } from "@goauthentik/common/errors"; import "@goauthentik/elements/SearchSelect"; import { Form } from "@goauthentik/elements/forms/Form"; import "@goauthentik/elements/forms/HorizontalFormElement"; import { t } from "@lingui/macro"; import { TemplateResult, html } from "lit"; import { customElement } from "lit/decorators.js"; import { Flow, FlowsApi, FlowsInstancesListDesignationEnum, FlowsInstancesListRequest, ProvidersApi, SAMLProvider, } from "@goauthentik/api"; @customElement("ak-provider-saml-import-form") export class SAMLProviderImportForm extends Form { getSuccessMessage(): string { return t`Successfully imported provider.`; } // eslint-disable-next-line send = (data: SAMLProvider): Promise => { const file = this.getFormFiles()["metadata"]; if (!file) { throw new SentryIgnoredError("No form data"); } return new ProvidersApi(DEFAULT_CONFIG).providersSamlImportMetadataCreate({ file: file, name: data.name, authorizationFlow: data.authorizationFlow, }); }; renderForm(): TemplateResult { return html`
=> { const args: FlowsInstancesListRequest = { ordering: "slug", designation: FlowsInstancesListDesignationEnum.Authorization, }; if (query !== undefined) { args.search = query; } const flows = await new FlowsApi(DEFAULT_CONFIG).flowsInstancesList(args); return flows.results; }} .renderElement=${(flow: Flow): string => { return flow.slug; }} .renderDescription=${(flow: Flow): TemplateResult => { return html`${flow.name}`; }} .value=${(flow: Flow | undefined): string | undefined => { return flow?.slug; }} >

${t`Flow used when authorizing this provider.`}

`; } }