2022-06-25 15:44:17 +00:00
import { DEFAULT_CONFIG } from "@goauthentik/web/api/Config" ;
import "@goauthentik/web/elements/forms/HorizontalFormElement" ;
import { ModelForm } from "@goauthentik/web/elements/forms/ModelForm" ;
import { first } from "@goauthentik/web/utils" ;
2021-04-03 17:26:43 +00:00
import { t } from "@lingui/macro" ;
2021-09-21 09:31:37 +00:00
2021-10-28 07:48:51 +00:00
import { TemplateResult , html } from "lit" ;
2021-11-04 21:34:48 +00:00
import { customElement } from "lit/decorators.js" ;
import { ifDefined } from "lit/directives/if-defined.js" ;
import { until } from "lit/directives/until.js" ;
2021-09-21 09:31:37 +00:00
import { CryptoApi , DockerServiceConnection , OutpostsApi } from "@goauthentik/api" ;
2021-03-31 20:40:48 +00:00
@customElement ( "ak-service-connection-docker-form" )
2021-05-11 10:05:30 +00:00
export class ServiceConnectionDockerForm extends ModelForm < DockerServiceConnection , string > {
loadInstance ( pk : string ) : Promise < DockerServiceConnection > {
2021-05-16 12:43:42 +00:00
return new OutpostsApi ( DEFAULT_CONFIG ) . outpostsServiceConnectionsDockerRetrieve ( {
2021-05-11 10:05:30 +00:00
uuid : pk ,
2021-03-31 20:40:48 +00:00
} ) ;
}
getSuccessMessage ( ) : string {
2021-05-11 10:05:30 +00:00
if ( this . instance ) {
2021-08-03 22:18:15 +00:00
return t ` Successfully updated integration. ` ;
2021-03-31 20:40:48 +00:00
} else {
2021-08-03 22:18:15 +00:00
return t ` Successfully created integration. ` ;
2021-03-31 20:40:48 +00:00
}
}
send = ( data : DockerServiceConnection ) : Promise < DockerServiceConnection > = > {
2021-05-11 10:05:30 +00:00
if ( this . instance ) {
2021-03-31 20:40:48 +00:00
return new OutpostsApi ( DEFAULT_CONFIG ) . outpostsServiceConnectionsDockerUpdate ( {
2021-05-11 10:05:30 +00:00
uuid : this.instance.pk || "" ,
2021-08-03 15:52:21 +00:00
dockerServiceConnectionRequest : data ,
2021-03-31 20:40:48 +00:00
} ) ;
} else {
return new OutpostsApi ( DEFAULT_CONFIG ) . outpostsServiceConnectionsDockerCreate ( {
2021-08-03 15:52:21 +00:00
dockerServiceConnectionRequest : data ,
2021-03-31 20:40:48 +00:00
} ) ;
}
} ;
renderForm ( ) : TemplateResult {
return html ` <form class="pf-c-form pf-m-horizontal">
2021-08-03 15:52:21 +00:00
< ak - form - element - horizontal label = $ { t ` Name ` } ? required = $ { true } name = "name" >
< input
type = "text"
value = "${ifDefined(this.instance?.name)}"
class = "pf-c-form-control"
required
/ >
2021-03-31 20:40:48 +00:00
< / a k - f o r m - e l e m e n t - h o r i z o n t a l >
< ak - form - element - horizontal name = "local" >
< div class = "pf-c-check" >
2021-08-03 15:52:21 +00:00
< input
type = "checkbox"
class = "pf-c-check__input"
? checked = $ { first ( this . instance ? . local , false ) }
/ >
< label class = "pf-c-check__label" > $ { t ` Local ` } < / label >
2021-03-31 20:40:48 +00:00
< / div >
2021-08-03 15:52:21 +00:00
< p class = "pf-c-form__helper-text" >
$ { t ` If enabled, use the local connection. Required Docker socket/Kubernetes Integration. ` }
< / p >
2021-03-31 20:40:48 +00:00
< / a k - f o r m - e l e m e n t - h o r i z o n t a l >
2021-08-03 15:52:21 +00:00
< ak - form - element - horizontal label = $ { t ` Docker URL ` } ? required = $ { true } name = "url" >
< input
type = "text"
value = "${ifDefined(this.instance?.url)}"
class = "pf-c-form-control"
required
/ >
< p class = "pf-c-form__helper-text" >
2021-12-25 15:31:34 +00:00
$ { t ` Can be in the format of 'unix://' when connecting to a local docker daemon, using 'ssh://' to connect via SSH, or 'https://:2376' when connecting to a remote system. ` }
2021-08-03 15:52:21 +00:00
< / p >
2021-03-31 20:40:48 +00:00
< / a k - f o r m - e l e m e n t - h o r i z o n t a l >
< ak - form - element - horizontal
2021-04-03 17:26:43 +00:00
label = $ { t ` TLS Verification Certificate ` }
2021-08-03 15:52:21 +00:00
name = "tlsVerification"
>
2021-03-31 20:40:48 +00:00
< select class = "pf-c-form-control" >
2021-08-03 15:52:21 +00:00
< option value = "" ? selected = $ { this.instance ? .tlsVerification = = = undefined } >
-- -- -- -- -
< / option >
$ { until (
new CryptoApi ( DEFAULT_CONFIG )
. cryptoCertificatekeypairsList ( {
2021-11-11 21:47:10 +00:00
ordering : "name" ,
2021-08-03 15:52:21 +00:00
} )
. then ( ( certs ) = > {
return certs . results . map ( ( cert ) = > {
return html ` <option
value = $ { ifDefined ( cert . pk ) }
? selected = $ { this . instance ? . tlsVerification === cert . pk }
>
$ { cert . name }
< / option > ` ;
} ) ;
} ) ,
2022-09-14 21:40:49 +00:00
html ` <option
value = $ { ifDefined ( this . instance ? . tlsVerification || undefined ) }
? selected = $ { this . instance ? . tlsVerification !== undefined }
>
$ { t ` Loading... ` }
< / option > ` ,
2021-08-03 15:52:21 +00:00
) }
2021-03-31 20:40:48 +00:00
< / select >
2021-08-03 15:52:21 +00:00
< p class = "pf-c-form__helper-text" >
$ { t ` CA which the endpoint's Certificate is verified against. Can be left empty for no validation. ` }
< / p >
2021-03-31 20:40:48 +00:00
< / a k - f o r m - e l e m e n t - h o r i z o n t a l >
< ak - form - element - horizontal
2021-12-25 15:31:34 +00:00
label = $ { t ` TLS Authentication Certificate/SSH Keypair ` }
2021-08-03 15:52:21 +00:00
name = "tlsAuthentication"
>
2021-03-31 20:40:48 +00:00
< select class = "pf-c-form-control" >
2021-08-03 15:52:21 +00:00
< option value = "" ? selected = $ { this.instance ? .tlsAuthentication = = = undefined } >
-- -- -- -- -
< / option >
$ { until (
new CryptoApi ( DEFAULT_CONFIG )
. cryptoCertificatekeypairsList ( {
2021-11-11 21:47:10 +00:00
ordering : "name" ,
2021-08-03 15:52:21 +00:00
} )
. then ( ( certs ) = > {
return certs . results . map ( ( cert ) = > {
return html ` <option
value = $ { ifDefined ( cert . pk ) }
? selected = $ { this . instance ? . tlsAuthentication === cert . pk }
>
$ { cert . name }
< / option > ` ;
} ) ;
} ) ,
2022-09-14 21:40:49 +00:00
html ` <option
value = $ { ifDefined ( this . instance ? . tlsAuthentication || undefined ) }
? selected = $ { this . instance ? . tlsAuthentication !== undefined }
>
$ { t ` Loading... ` }
< / option > ` ,
2021-08-03 15:52:21 +00:00
) }
2021-03-31 20:40:48 +00:00
< / select >
2021-08-03 15:52:21 +00:00
< p class = "pf-c-form__helper-text" >
$ { t ` Certificate/Key used for authentication. Can be left empty for no authentication. ` }
< / p >
2021-12-25 15:31:34 +00:00
< p class = "pf-c-form__helper-text" >
$ { t ` When connecting via SSH, this keypair is used for authentication. ` }
< / p >
2021-03-31 20:40:48 +00:00
< / a k - f o r m - e l e m e n t - h o r i z o n t a l >
< / form > ` ;
}
}