import { first } from "@goauthentik/app/common/utils"; import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import "@goauthentik/components/ak-radio-input"; import "@goauthentik/elements/CodeMirror"; import "@goauthentik/elements/forms/FormGroup"; import "@goauthentik/elements/forms/HorizontalFormElement"; import { ModelForm } from "@goauthentik/elements/forms/ModelForm"; import YAML from "yaml"; import { msg } from "@lit/localize"; import { TemplateResult, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; import { AuthModeEnum, Endpoint, PaginatedRACPropertyMappingList, PropertymappingsApi, ProtocolEnum, RacApi, } from "@goauthentik/api"; @customElement("ak-rac-endpoint-form") export class EndpointForm extends ModelForm { @property({ type: Number }) providerID?: number; propertyMappings?: PaginatedRACPropertyMappingList; async load(): Promise { this.propertyMappings = await new PropertymappingsApi( DEFAULT_CONFIG, ).propertymappingsRacList({ ordering: "name", }); } loadInstance(pk: string): Promise { return new RacApi(DEFAULT_CONFIG).racEndpointsRetrieve({ pbmUuid: pk, }); } getSuccessMessage(): string { return this.instance ? msg("Successfully updated endpoint.") : msg("Successfully created endpoint."); } async send(data: Endpoint): Promise { data.authMode = AuthModeEnum.Prompt; if (!this.instance) { data.provider = this.providerID || 0; } else { data.provider = this.instance.provider; } if (this.instance) { return new RacApi(DEFAULT_CONFIG).racEndpointsPartialUpdate({ pbmUuid: this.instance.pk || "", patchedEndpointRequest: data, }); } else { return new RacApi(DEFAULT_CONFIG).racEndpointsCreate({ endpointRequest: data, }); } } renderForm(): TemplateResult { return html`

${msg("Hostname/IP to connect to.")}

${msg("Hold control/command to select multiple items.")}

${msg("Advanced settings")}

${msg("Connection settings.")}

`; } }