web/admin: add Radio control, search-select fixes (#4333)
* move search select to forms folder Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * add radio, migrate smaller lists Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * move dropdown when scrolling, hide when container out of frame Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
		@ -1,9 +1,10 @@
 | 
			
		||||
import { DEFAULT_CONFIG, tenant } from "@goauthentik/common/api/config";
 | 
			
		||||
import { first } from "@goauthentik/common/utils";
 | 
			
		||||
import "@goauthentik/elements/SearchSelect";
 | 
			
		||||
import "@goauthentik/elements/forms/FormGroup";
 | 
			
		||||
import "@goauthentik/elements/forms/HorizontalFormElement";
 | 
			
		||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
 | 
			
		||||
import "@goauthentik/elements/forms/Radio";
 | 
			
		||||
import "@goauthentik/elements/forms/SearchSelect";
 | 
			
		||||
 | 
			
		||||
import { t } from "@lingui/macro";
 | 
			
		||||
 | 
			
		||||
@ -146,44 +147,49 @@ export class LDAPProviderFormPage extends ModelForm<LDAPProvider, number> {
 | 
			
		||||
                </p>
 | 
			
		||||
            </ak-form-element-horizontal>
 | 
			
		||||
            <ak-form-element-horizontal label=${t`Bind mode`} name="bindMode">
 | 
			
		||||
                <select class="pf-c-form-control">
 | 
			
		||||
                    <option
 | 
			
		||||
                        value="${LDAPAPIAccessMode.Cached}"
 | 
			
		||||
                        ?selected=${this.instance?.bindMode === LDAPAPIAccessMode.Cached}
 | 
			
		||||
                    >
 | 
			
		||||
                        ${t`Cached binding, flow is executed and session is cached in memory. Flow is executed when session expires.`}
 | 
			
		||||
                    </option>
 | 
			
		||||
                    <option
 | 
			
		||||
                        value="${LDAPAPIAccessMode.Direct}"
 | 
			
		||||
                        ?selected=${this.instance?.bindMode === LDAPAPIAccessMode.Direct}
 | 
			
		||||
                    >
 | 
			
		||||
                        ${t`Direct binding, always execute the configured bind flow to authenticate the user.`}
 | 
			
		||||
                    </option>
 | 
			
		||||
                </select>
 | 
			
		||||
                <ak-radio
 | 
			
		||||
                    .options=${[
 | 
			
		||||
                        {
 | 
			
		||||
                            label: t`Cached binding`,
 | 
			
		||||
                            value: LDAPAPIAccessMode.Cached,
 | 
			
		||||
                            default: true,
 | 
			
		||||
                            description: html`${t`Flow is executed and session is cached in memory. Flow is executed when session expires`}`,
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            label: t`Direct binding`,
 | 
			
		||||
                            value: LDAPAPIAccessMode.Direct,
 | 
			
		||||
                            description: html`${t`Always execute the configured bind flow to authenticate the user`}`,
 | 
			
		||||
                        },
 | 
			
		||||
                    ]}
 | 
			
		||||
                    .value=${this.instance?.bindMode}
 | 
			
		||||
                >
 | 
			
		||||
                </ak-radio>
 | 
			
		||||
                <p class="pf-c-form__helper-text">
 | 
			
		||||
                    ${t`Configure how the outpost authenticates requests.`}
 | 
			
		||||
                </p>
 | 
			
		||||
            </ak-form-element-horizontal>
 | 
			
		||||
            <ak-form-element-horizontal label=${t`Search mode`} name="searchMode">
 | 
			
		||||
                <select class="pf-c-form-control">
 | 
			
		||||
                    <option
 | 
			
		||||
                        value="${LDAPAPIAccessMode.Cached}"
 | 
			
		||||
                        ?selected=${this.instance?.searchMode === LDAPAPIAccessMode.Cached}
 | 
			
		||||
                    >
 | 
			
		||||
                        ${t`Cached querying, the outpost holds all users and groups in-memory and will refresh every 5 Minutes.`}
 | 
			
		||||
                    </option>
 | 
			
		||||
                    <option
 | 
			
		||||
                        value="${LDAPAPIAccessMode.Direct}"
 | 
			
		||||
                        ?selected=${this.instance?.searchMode === LDAPAPIAccessMode.Direct}
 | 
			
		||||
                    >
 | 
			
		||||
                        ${t`Direct querying, always returns the latest data, but slower than cached querying.`}
 | 
			
		||||
                    </option>
 | 
			
		||||
                </select>
 | 
			
		||||
                <ak-radio
 | 
			
		||||
                    .options=${[
 | 
			
		||||
                        {
 | 
			
		||||
                            label: t`Cached querying`,
 | 
			
		||||
                            value: LDAPAPIAccessMode.Cached,
 | 
			
		||||
                            default: true,
 | 
			
		||||
                            description: html`${t`The outpost holds all users and groups in-memory and will refresh every 5 Minutes`}`,
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            label: t`Direct querying`,
 | 
			
		||||
                            value: LDAPAPIAccessMode.Direct,
 | 
			
		||||
                            description: html`${t`Always returns the latest data, but slower than cached querying`}`,
 | 
			
		||||
                        },
 | 
			
		||||
                    ]}
 | 
			
		||||
                    .value=${this.instance?.searchMode}
 | 
			
		||||
                >
 | 
			
		||||
                </ak-radio>
 | 
			
		||||
                <p class="pf-c-form__helper-text">
 | 
			
		||||
                    ${t`Configure how the outpost queries the core authentik server's users.`}
 | 
			
		||||
                </p>
 | 
			
		||||
            </ak-form-element-horizontal>
 | 
			
		||||
 | 
			
		||||
            <ak-form-group .expanded=${true}>
 | 
			
		||||
                <span slot="header"> ${t`Protocol settings`} </span>
 | 
			
		||||
                <div slot="body" class="pf-c-form">
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,10 @@
 | 
			
		||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
 | 
			
		||||
import { first, randomString } from "@goauthentik/common/utils";
 | 
			
		||||
import "@goauthentik/elements/SearchSelect";
 | 
			
		||||
import "@goauthentik/elements/forms/FormGroup";
 | 
			
		||||
import "@goauthentik/elements/forms/HorizontalFormElement";
 | 
			
		||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
 | 
			
		||||
import "@goauthentik/elements/forms/Radio";
 | 
			
		||||
import "@goauthentik/elements/forms/SearchSelect";
 | 
			
		||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
 | 
			
		||||
 | 
			
		||||
import { t } from "@lingui/macro";
 | 
			
		||||
@ -365,21 +366,21 @@ ${this.instance?.redirectUris}</textarea
 | 
			
		||||
                        ?required=${true}
 | 
			
		||||
                        name="issuerMode"
 | 
			
		||||
                    >
 | 
			
		||||
                        <select class="pf-c-form-control">
 | 
			
		||||
                            <option
 | 
			
		||||
                                value="${IssuerModeEnum.PerProvider}"
 | 
			
		||||
                                ?selected=${this.instance?.issuerMode ===
 | 
			
		||||
                                IssuerModeEnum.PerProvider}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`Each provider has a different issuer, based on the application slug.`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value="${IssuerModeEnum.Global}"
 | 
			
		||||
                                ?selected=${this.instance?.issuerMode === IssuerModeEnum.Global}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`Same identifier is used for all providers`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                        </select>
 | 
			
		||||
                        <ak-radio
 | 
			
		||||
                            .options=${[
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: t`Each provider has a different issuer, based on the application slug`,
 | 
			
		||||
                                    value: IssuerModeEnum.PerProvider,
 | 
			
		||||
                                    default: true,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: t`Same identifier is used for all providers`,
 | 
			
		||||
                                    value: IssuerModeEnum.Global,
 | 
			
		||||
                                },
 | 
			
		||||
                            ]}
 | 
			
		||||
                            .value=${this.instance?.issuerMode}
 | 
			
		||||
                        >
 | 
			
		||||
                        </ak-radio>
 | 
			
		||||
                        <p class="pf-c-form__helper-text">
 | 
			
		||||
                            ${t`Configure how the issuer field of the ID Token should be filled.`}
 | 
			
		||||
                        </p>
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,9 @@
 | 
			
		||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
 | 
			
		||||
import { first } from "@goauthentik/common/utils";
 | 
			
		||||
import "@goauthentik/elements/SearchSelect";
 | 
			
		||||
import "@goauthentik/elements/forms/FormGroup";
 | 
			
		||||
import "@goauthentik/elements/forms/HorizontalFormElement";
 | 
			
		||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
 | 
			
		||||
import "@goauthentik/elements/forms/SearchSelect";
 | 
			
		||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
 | 
			
		||||
 | 
			
		||||
import { t } from "@lingui/macro";
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,9 @@
 | 
			
		||||
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
 | 
			
		||||
import "@goauthentik/elements/SearchSelect";
 | 
			
		||||
import "@goauthentik/elements/forms/FormGroup";
 | 
			
		||||
import "@goauthentik/elements/forms/HorizontalFormElement";
 | 
			
		||||
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
 | 
			
		||||
import "@goauthentik/elements/forms/Radio";
 | 
			
		||||
import "@goauthentik/elements/forms/SearchSelect";
 | 
			
		||||
import "@goauthentik/elements/utils/TimeDeltaHelp";
 | 
			
		||||
 | 
			
		||||
import { t } from "@lingui/macro";
 | 
			
		||||
@ -130,20 +131,21 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
 | 
			
		||||
                        ?required=${true}
 | 
			
		||||
                        name="spBinding"
 | 
			
		||||
                    >
 | 
			
		||||
                        <select class="pf-c-form-control">
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${SpBindingEnum.Redirect}
 | 
			
		||||
                                ?selected=${this.instance?.spBinding === SpBindingEnum.Redirect}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`Redirect`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${SpBindingEnum.Post}
 | 
			
		||||
                                ?selected=${this.instance?.spBinding === SpBindingEnum.Post}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`Post`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                        </select>
 | 
			
		||||
                        <ak-radio
 | 
			
		||||
                            .options=${[
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: t`Redirect`,
 | 
			
		||||
                                    value: SpBindingEnum.Redirect,
 | 
			
		||||
                                    default: true,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: t`Post`,
 | 
			
		||||
                                    value: SpBindingEnum.Post,
 | 
			
		||||
                                },
 | 
			
		||||
                            ]}
 | 
			
		||||
                            .value=${this.instance?.spBinding}
 | 
			
		||||
                        >
 | 
			
		||||
                        </ak-radio>
 | 
			
		||||
                        <p class="pf-c-form__helper-text">
 | 
			
		||||
                            ${t`Determines how authentik sends the response back to the Service Provider.`}
 | 
			
		||||
                        </p>
 | 
			
		||||
@ -366,81 +368,62 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
 | 
			
		||||
                        ?required=${true}
 | 
			
		||||
                        name="digestAlgorithm"
 | 
			
		||||
                    >
 | 
			
		||||
                        <select class="pf-c-form-control">
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${DigestAlgorithmEnum._200009Xmldsigsha1}
 | 
			
		||||
                                ?selected=${this.instance?.digestAlgorithm ===
 | 
			
		||||
                                DigestAlgorithmEnum._200009Xmldsigsha1}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`SHA1`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${DigestAlgorithmEnum._200104Xmlencsha256}
 | 
			
		||||
                                ?selected=${this.instance?.digestAlgorithm ===
 | 
			
		||||
                                    DigestAlgorithmEnum._200104Xmlencsha256 ||
 | 
			
		||||
                                this.instance?.digestAlgorithm === undefined}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`SHA256`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${DigestAlgorithmEnum._200104XmldsigMoresha384}
 | 
			
		||||
                                ?selected=${this.instance?.digestAlgorithm ===
 | 
			
		||||
                                DigestAlgorithmEnum._200104XmldsigMoresha384}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`SHA384`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${DigestAlgorithmEnum._200104Xmlencsha512}
 | 
			
		||||
                                ?selected=${this.instance?.digestAlgorithm ===
 | 
			
		||||
                                DigestAlgorithmEnum._200104Xmlencsha512}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`SHA512`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                        </select>
 | 
			
		||||
                        <ak-radio
 | 
			
		||||
                            .options=${[
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "SHA1",
 | 
			
		||||
                                    value: DigestAlgorithmEnum._200009Xmldsigsha1,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "SHA256",
 | 
			
		||||
                                    value: DigestAlgorithmEnum._200104Xmlencsha256,
 | 
			
		||||
                                    default: true,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "SHA384",
 | 
			
		||||
                                    value: DigestAlgorithmEnum._200104XmldsigMoresha384,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "SHA512",
 | 
			
		||||
                                    value: DigestAlgorithmEnum._200104Xmlencsha512,
 | 
			
		||||
                                },
 | 
			
		||||
                            ]}
 | 
			
		||||
                            .value=${this.instance?.digestAlgorithm}
 | 
			
		||||
                        >
 | 
			
		||||
                        </ak-radio>
 | 
			
		||||
                    </ak-form-element-horizontal>
 | 
			
		||||
                    <ak-form-element-horizontal
 | 
			
		||||
                        label=${t`Signature algorithm`}
 | 
			
		||||
                        ?required=${true}
 | 
			
		||||
                        name="signatureAlgorithm"
 | 
			
		||||
                    >
 | 
			
		||||
                        <select class="pf-c-form-control">
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${SignatureAlgorithmEnum._200009XmldsigrsaSha1}
 | 
			
		||||
                                ?selected=${this.instance?.signatureAlgorithm ===
 | 
			
		||||
                                SignatureAlgorithmEnum._200009XmldsigrsaSha1}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`RSA-SHA1`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${SignatureAlgorithmEnum._200104XmldsigMorersaSha256}
 | 
			
		||||
                                ?selected=${this.instance?.signatureAlgorithm ===
 | 
			
		||||
                                    SignatureAlgorithmEnum._200104XmldsigMorersaSha256 ||
 | 
			
		||||
                                this.instance?.signatureAlgorithm === undefined}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`RSA-SHA256`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${SignatureAlgorithmEnum._200104XmldsigMorersaSha384}
 | 
			
		||||
                                ?selected=${this.instance?.signatureAlgorithm ===
 | 
			
		||||
                                SignatureAlgorithmEnum._200104XmldsigMorersaSha384}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`RSA-SHA384`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${SignatureAlgorithmEnum._200104XmldsigMorersaSha512}
 | 
			
		||||
                                ?selected=${this.instance?.signatureAlgorithm ===
 | 
			
		||||
                                SignatureAlgorithmEnum._200104XmldsigMorersaSha512}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`RSA-SHA512`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                            <option
 | 
			
		||||
                                value=${SignatureAlgorithmEnum._200009XmldsigdsaSha1}
 | 
			
		||||
                                ?selected=${this.instance?.signatureAlgorithm ===
 | 
			
		||||
                                SignatureAlgorithmEnum._200009XmldsigdsaSha1}
 | 
			
		||||
                            >
 | 
			
		||||
                                ${t`DSA-SHA1`}
 | 
			
		||||
                            </option>
 | 
			
		||||
                        </select>
 | 
			
		||||
                        <ak-radio
 | 
			
		||||
                            .options=${[
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "RSA-SHA1",
 | 
			
		||||
                                    value: SignatureAlgorithmEnum._200009XmldsigrsaSha1,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "RSA-SHA256",
 | 
			
		||||
                                    value: SignatureAlgorithmEnum._200104XmldsigMorersaSha256,
 | 
			
		||||
                                    default: true,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "RSA-SHA384",
 | 
			
		||||
                                    value: SignatureAlgorithmEnum._200104XmldsigMorersaSha384,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "RSA-SHA512",
 | 
			
		||||
                                    value: SignatureAlgorithmEnum._200104XmldsigMorersaSha512,
 | 
			
		||||
                                },
 | 
			
		||||
                                {
 | 
			
		||||
                                    label: "DSA-SHA1",
 | 
			
		||||
                                    value: SignatureAlgorithmEnum._200009XmldsigdsaSha1,
 | 
			
		||||
                                },
 | 
			
		||||
                            ]}
 | 
			
		||||
                            .value=${this.instance?.signatureAlgorithm}
 | 
			
		||||
                        >
 | 
			
		||||
                        </ak-radio>
 | 
			
		||||
                    </ak-form-element-horizontal>
 | 
			
		||||
                </div>
 | 
			
		||||
            </ak-form-group>
 | 
			
		||||
 | 
			
		||||
@ -1,8 +1,8 @@
 | 
			
		||||
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 "@goauthentik/elements/forms/SearchSelect";
 | 
			
		||||
 | 
			
		||||
import { t } from "@lingui/macro";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user