web/admin: migrate stage forms to ModelForm
Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
parent
ce1c400022
commit
59f339beda
|
@ -58,7 +58,7 @@ export class BoundStagesList extends Table<FlowStageBinding> {
|
||||||
<ak-proxy-form
|
<ak-proxy-form
|
||||||
slot="form"
|
slot="form"
|
||||||
.args=${{
|
.args=${{
|
||||||
"stageUUID": item.stage
|
"instancePk": item.stage
|
||||||
}}
|
}}
|
||||||
type=${ifDefined(item.stageObj?.component)}>
|
type=${ifDefined(item.stageObj?.component)}>
|
||||||
</ak-proxy-form>
|
</ak-proxy-form>
|
||||||
|
|
|
@ -90,7 +90,7 @@ export class StageListPage extends TablePage<Stage> {
|
||||||
<ak-proxy-form
|
<ak-proxy-form
|
||||||
slot="form"
|
slot="form"
|
||||||
.args=${{
|
.args=${{
|
||||||
"stageUUID": item.pk
|
"instancePk": item.pk
|
||||||
}}
|
}}
|
||||||
type=${ifDefined(item.component)}>
|
type=${ifDefined(item.component)}>
|
||||||
</ak-proxy-form>
|
</ak-proxy-form>
|
||||||
|
|
|
@ -1,31 +1,26 @@
|
||||||
import { FlowDesignationEnum, FlowsApi, AuthenticatorStaticStage, StagesApi } from "authentik-api";
|
import { FlowDesignationEnum, FlowsApi, AuthenticatorStaticStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
import { first } from "../../../utils";
|
import { first } from "../../../utils";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-static-form")
|
@customElement("ak-stage-authenticator-static-form")
|
||||||
export class AuthenticatorStaticStageForm extends Form<AuthenticatorStaticStage> {
|
export class AuthenticatorStaticStageForm extends ModelForm<AuthenticatorStaticStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<AuthenticatorStaticStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: AuthenticatorStaticStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -33,9 +28,9 @@ export class AuthenticatorStaticStageForm extends Form<AuthenticatorStaticStage>
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: AuthenticatorStaticStage): Promise<AuthenticatorStaticStage> => {
|
send = (data: AuthenticatorStaticStage): Promise<AuthenticatorStaticStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -54,7 +49,7 @@ export class AuthenticatorStaticStageForm extends Form<AuthenticatorStaticStage>
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -65,20 +60,20 @@ export class AuthenticatorStaticStageForm extends Form<AuthenticatorStaticStage>
|
||||||
label=${t`Token count`}
|
label=${t`Token count`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="tokenCount">
|
name="tokenCount">
|
||||||
<input type="text" value="${first(this.stage?.tokenCount, 6)}" class="pf-c-form-control" required>
|
<input type="text" value="${first(this.instance?.tokenCount, 6)}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`Configuration flow`}
|
label=${t`Configuration flow`}
|
||||||
name="configureFlow">
|
name="configureFlow">
|
||||||
<select class="pf-c-form-control">
|
<select class="pf-c-form-control">
|
||||||
<option value="" ?selected=${this.stage?.configureFlow === undefined}>---------</option>
|
<option value="" ?selected=${this.instance?.configureFlow === undefined}>---------</option>
|
||||||
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
||||||
ordering: "pk",
|
ordering: "pk",
|
||||||
designation: FlowDesignationEnum.StageConfiguration,
|
designation: FlowDesignationEnum.StageConfiguration,
|
||||||
}).then(flows => {
|
}).then(flows => {
|
||||||
return flows.results.map(flow => {
|
return flows.results.map(flow => {
|
||||||
let selected = this.stage?.configureFlow === flow.pk;
|
let selected = this.instance?.configureFlow === flow.pk;
|
||||||
if (!this.stage?.pk && !this.stage?.configureFlow && flow.slug === "default-otp-time-configure") {
|
if (!this.instance?.pk && !this.instance?.configureFlow && flow.slug === "default-otp-time-configure") {
|
||||||
selected = true;
|
selected = true;
|
||||||
}
|
}
|
||||||
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
||||||
|
|
|
@ -1,30 +1,25 @@
|
||||||
import { FlowDesignationEnum, FlowsApi, AuthenticatorTOTPStage, StagesApi } from "authentik-api";
|
import { FlowDesignationEnum, FlowsApi, AuthenticatorTOTPStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-totp-form")
|
@customElement("ak-stage-authenticator-totp-form")
|
||||||
export class AuthenticatorTOTPStageForm extends Form<AuthenticatorTOTPStage> {
|
export class AuthenticatorTOTPStageForm extends ModelForm<AuthenticatorTOTPStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<AuthenticatorTOTPStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: AuthenticatorTOTPStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -32,9 +27,9 @@ export class AuthenticatorTOTPStageForm extends Form<AuthenticatorTOTPStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: AuthenticatorTOTPStage): Promise<AuthenticatorTOTPStage> => {
|
send = (data: AuthenticatorTOTPStage): Promise<AuthenticatorTOTPStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -53,7 +48,7 @@ export class AuthenticatorTOTPStageForm extends Form<AuthenticatorTOTPStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -65,10 +60,10 @@ export class AuthenticatorTOTPStageForm extends Form<AuthenticatorTOTPStage> {
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="digits">
|
name="digits">
|
||||||
<select name="users" class="pf-c-form-control">
|
<select name="users" class="pf-c-form-control">
|
||||||
<option value="6" ?selected=${this.stage?.digits === 6}>
|
<option value="6" ?selected=${this.instance?.digits === 6}>
|
||||||
${t`6 digits, widely compatible`}
|
${t`6 digits, widely compatible`}
|
||||||
</option>
|
</option>
|
||||||
<option value="8" ?selected=${this.stage?.digits === 8}>
|
<option value="8" ?selected=${this.instance?.digits === 8}>
|
||||||
${t`8 digits, not compatible with apps like Google Authenticator`}
|
${t`8 digits, not compatible with apps like Google Authenticator`}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
|
@ -77,14 +72,14 @@ export class AuthenticatorTOTPStageForm extends Form<AuthenticatorTOTPStage> {
|
||||||
label=${t`Configuration flow`}
|
label=${t`Configuration flow`}
|
||||||
name="configureFlow">
|
name="configureFlow">
|
||||||
<select class="pf-c-form-control">
|
<select class="pf-c-form-control">
|
||||||
<option value="" ?selected=${this.stage?.configureFlow === undefined}>---------</option>
|
<option value="" ?selected=${this.instance?.configureFlow === undefined}>---------</option>
|
||||||
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
||||||
ordering: "pk",
|
ordering: "pk",
|
||||||
designation: FlowDesignationEnum.StageConfiguration,
|
designation: FlowDesignationEnum.StageConfiguration,
|
||||||
}).then(flows => {
|
}).then(flows => {
|
||||||
return flows.results.map(flow => {
|
return flows.results.map(flow => {
|
||||||
let selected = this.stage?.configureFlow === flow.pk;
|
let selected = this.instance?.configureFlow === flow.pk;
|
||||||
if (!this.stage?.pk && !this.stage?.configureFlow && flow.slug === "default-otp-time-configure") {
|
if (!this.instance?.pk && !this.instance?.configureFlow && flow.slug === "default-otp-time-configure") {
|
||||||
selected = true;
|
selected = true;
|
||||||
}
|
}
|
||||||
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
||||||
|
|
|
@ -3,32 +3,29 @@ import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement, property } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-validate-form")
|
@customElement("ak-stage-authenticator-validate-form")
|
||||||
export class AuthenticatorValidateStageForm extends Form<AuthenticatorValidateStage> {
|
export class AuthenticatorValidateStageForm extends ModelForm<AuthenticatorValidateStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<AuthenticatorValidateStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
}).then(stage => {
|
||||||
this.stage = stage;
|
|
||||||
this.showConfigureFlow = stage.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Configure;
|
this.showConfigureFlow = stage.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Configure;
|
||||||
|
return stage;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: AuthenticatorValidateStage;
|
|
||||||
|
|
||||||
@property({ type: Boolean })
|
@property({ type: Boolean })
|
||||||
showConfigureFlow = false;
|
showConfigureFlow = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -36,9 +33,9 @@ export class AuthenticatorValidateStageForm extends Form<AuthenticatorValidateSt
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: AuthenticatorValidateStage): Promise<AuthenticatorValidateStage> => {
|
send = (data: AuthenticatorValidateStage): Promise<AuthenticatorValidateStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -49,7 +46,7 @@ export class AuthenticatorValidateStageForm extends Form<AuthenticatorValidateSt
|
||||||
};
|
};
|
||||||
|
|
||||||
isDeviceClassSelected(field: AuthenticatorValidateStageDeviceClassesEnum): boolean {
|
isDeviceClassSelected(field: AuthenticatorValidateStageDeviceClassesEnum): boolean {
|
||||||
return (this.stage?.deviceClasses || []).filter(isField => {
|
return (this.instance?.deviceClasses || []).filter(isField => {
|
||||||
return field === isField;
|
return field === isField;
|
||||||
}).length > 0;
|
}).length > 0;
|
||||||
}
|
}
|
||||||
|
@ -63,7 +60,7 @@ export class AuthenticatorValidateStageForm extends Form<AuthenticatorValidateSt
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -82,13 +79,13 @@ export class AuthenticatorValidateStageForm extends Form<AuthenticatorValidateSt
|
||||||
this.showConfigureFlow = false;
|
this.showConfigureFlow = false;
|
||||||
}
|
}
|
||||||
}}>
|
}}>
|
||||||
<option value=${AuthenticatorValidateStageNotConfiguredActionEnum.Configure} ?selected=${this.stage?.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Configure}>
|
<option value=${AuthenticatorValidateStageNotConfiguredActionEnum.Configure} ?selected=${this.instance?.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Configure}>
|
||||||
${t`Force the user to configure an authenticator`}
|
${t`Force the user to configure an authenticator`}
|
||||||
</option>
|
</option>
|
||||||
<option value=${AuthenticatorValidateStageNotConfiguredActionEnum.Deny} ?selected=${this.stage?.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Deny}>
|
<option value=${AuthenticatorValidateStageNotConfiguredActionEnum.Deny} ?selected=${this.instance?.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Deny}>
|
||||||
${t`Deny the user access`}
|
${t`Deny the user access`}
|
||||||
</option>
|
</option>
|
||||||
<option value=${AuthenticatorValidateStageNotConfiguredActionEnum.Skip} ?selected=${this.stage?.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Skip}>
|
<option value=${AuthenticatorValidateStageNotConfiguredActionEnum.Skip} ?selected=${this.instance?.notConfiguredAction === AuthenticatorValidateStageNotConfiguredActionEnum.Skip}>
|
||||||
${t`Continue`}
|
${t`Continue`}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
|
@ -117,12 +114,12 @@ export class AuthenticatorValidateStageForm extends Form<AuthenticatorValidateSt
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="configureFlow">
|
name="configureFlow">
|
||||||
<select class="pf-c-form-control">
|
<select class="pf-c-form-control">
|
||||||
<option value="" ?selected=${this.stage?.configurationStage === undefined}>---------</option>
|
<option value="" ?selected=${this.instance?.configurationStage === undefined}>---------</option>
|
||||||
${until(new StagesApi(DEFAULT_CONFIG).stagesAllList({
|
${until(new StagesApi(DEFAULT_CONFIG).stagesAllList({
|
||||||
ordering: "pk",
|
ordering: "pk",
|
||||||
}).then(stages => {
|
}).then(stages => {
|
||||||
return stages.results.map(stage => {
|
return stages.results.map(stage => {
|
||||||
const selected = this.stage?.configurationStage === stage.pk;
|
const selected = this.instance?.configurationStage === stage.pk;
|
||||||
return html`<option value=${ifDefined(stage.pk)} ?selected=${selected}>${stage.name} (${stage.verboseName})</option>`;
|
return html`<option value=${ifDefined(stage.pk)} ?selected=${selected}>${stage.name} (${stage.verboseName})</option>`;
|
||||||
});
|
});
|
||||||
}), html`<option>${t`Loading...`}</option>`)}
|
}), html`<option>${t`Loading...`}</option>`)}
|
||||||
|
|
|
@ -1,28 +1,23 @@
|
||||||
import { AuthenticateWebAuthnStage, StagesApi } from "authentik-api";
|
import { AuthenticateWebAuthnStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-authenticator-webauthn-form")
|
@customElement("ak-stage-authenticator-webauthn-form")
|
||||||
export class AuthenticateWebAuthnStageForm extends Form<AuthenticateWebAuthnStage> {
|
export class AuthenticateWebAuthnStageForm extends ModelForm<AuthenticateWebAuthnStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<AuthenticateWebAuthnStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorWebauthnRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorWebauthnRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: AuthenticateWebAuthnStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -30,9 +25,9 @@ export class AuthenticateWebAuthnStageForm extends Form<AuthenticateWebAuthnStag
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: AuthenticateWebAuthnStage): Promise<AuthenticateWebAuthnStage> => {
|
send = (data: AuthenticateWebAuthnStage): Promise<AuthenticateWebAuthnStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorWebauthnUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorWebauthnUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -51,7 +46,7 @@ export class AuthenticateWebAuthnStageForm extends Form<AuthenticateWebAuthnStag
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,24 @@
|
||||||
import { CaptchaStage, StagesApi } from "authentik-api";
|
import { CaptchaStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-captcha-form")
|
@customElement("ak-stage-captcha-form")
|
||||||
export class CaptchaStageForm extends Form<CaptchaStage> {
|
export class CaptchaStageForm extends ModelForm<CaptchaStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<CaptchaStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesCaptchaRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: CaptchaStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -31,9 +26,9 @@ export class CaptchaStageForm extends Form<CaptchaStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: CaptchaStage): Promise<CaptchaStage> => {
|
send = (data: CaptchaStage): Promise<CaptchaStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaPartialUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaPartialUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -52,7 +47,7 @@ export class CaptchaStageForm extends Form<CaptchaStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -63,15 +58,15 @@ export class CaptchaStageForm extends Form<CaptchaStage> {
|
||||||
label=${t`Public Key`}
|
label=${t`Public Key`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="publicKey">
|
name="publicKey">
|
||||||
<input type="text" value="${ifDefined(this.stage?.publicKey || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.publicKey || "")}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`Public key, acquired from https://www.google.com/recaptcha/intro/v3.html.`}</p>
|
<p class="pf-c-form__helper-text">${t`Public key, acquired from https://www.google.com/recaptcha/intro/v3.html.`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`Private Key`}
|
label=${t`Private Key`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
?writeOnly=${this.stage !== undefined}
|
?writeOnly=${this.instance !== undefined}
|
||||||
name="privateKey">
|
name="privateKey">
|
||||||
<input type="text" value="${ifDefined(this.stage?.privateKey || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.privateKey || "")}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`Private key, acquired from https://www.google.com/recaptcha/intro/v3.html.`}</p>
|
<p class="pf-c-form__helper-text">${t`Private key, acquired from https://www.google.com/recaptcha/intro/v3.html.`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -3,31 +3,28 @@ import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement, property } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-consent-form")
|
@customElement("ak-stage-consent-form")
|
||||||
export class ConsentStageForm extends Form<ConsentStage> {
|
export class ConsentStageForm extends ModelForm<ConsentStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<ConsentStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesConsentRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesConsentRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
}).then(stage => {
|
||||||
this.stage = stage;
|
|
||||||
this.showExpiresIn = stage.name === ConsentStageModeEnum.Expiring;
|
this.showExpiresIn = stage.name === ConsentStageModeEnum.Expiring;
|
||||||
|
return stage;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: ConsentStage;
|
|
||||||
|
|
||||||
@property({type: Boolean})
|
@property({type: Boolean})
|
||||||
showExpiresIn = false;
|
showExpiresIn = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -35,9 +32,9 @@ export class ConsentStageForm extends Form<ConsentStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: ConsentStage): Promise<ConsentStage> => {
|
send = (data: ConsentStage): Promise<ConsentStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesConsentUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesConsentUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -56,7 +53,7 @@ export class ConsentStageForm extends Form<ConsentStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -75,13 +72,13 @@ export class ConsentStageForm extends Form<ConsentStage> {
|
||||||
this.showExpiresIn = false;
|
this.showExpiresIn = false;
|
||||||
}
|
}
|
||||||
}}>
|
}}>
|
||||||
<option value=${ConsentStageModeEnum.AlwaysRequire} ?selected=${this.stage?.mode === ConsentStageModeEnum.AlwaysRequire}>
|
<option value=${ConsentStageModeEnum.AlwaysRequire} ?selected=${this.instance?.mode === ConsentStageModeEnum.AlwaysRequire}>
|
||||||
${t`Always require consent`}
|
${t`Always require consent`}
|
||||||
</option>
|
</option>
|
||||||
<option value=${ConsentStageModeEnum.Permanent} ?selected=${this.stage?.mode === ConsentStageModeEnum.Permanent}>
|
<option value=${ConsentStageModeEnum.Permanent} ?selected=${this.instance?.mode === ConsentStageModeEnum.Permanent}>
|
||||||
${t`Consent given last indefinitely`}
|
${t`Consent given last indefinitely`}
|
||||||
</option>
|
</option>
|
||||||
<option value=${ConsentStageModeEnum.Expiring} ?selected=${this.stage?.mode === ConsentStageModeEnum.Expiring}>
|
<option value=${ConsentStageModeEnum.Expiring} ?selected=${this.instance?.mode === ConsentStageModeEnum.Expiring}>
|
||||||
${t`Consent expires.`}
|
${t`Consent expires.`}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
|
@ -91,7 +88,7 @@ export class ConsentStageForm extends Form<ConsentStage> {
|
||||||
label=${t`Consent expires in`}
|
label=${t`Consent expires in`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="consentExpireIn">
|
name="consentExpireIn">
|
||||||
<input type="text" value="${ifDefined(this.stage?.consentExpireIn || "weeks=4")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.consentExpireIn || "weeks=4")}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3).`}</p>
|
<p class="pf-c-form__helper-text">${t`Offset after which consent expires. (Format: hours=1;minutes=2;seconds=3).`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,28 +1,23 @@
|
||||||
import { DenyStage, StagesApi } from "authentik-api";
|
import { DenyStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-deny-form")
|
@customElement("ak-stage-deny-form")
|
||||||
export class DenyStageForm extends Form<DenyStage> {
|
export class DenyStageForm extends ModelForm<DenyStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<DenyStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesDenyRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesDenyRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: DenyStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -30,9 +25,9 @@ export class DenyStageForm extends Form<DenyStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: DenyStage): Promise<DenyStage> => {
|
send = (data: DenyStage): Promise<DenyStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesDenyUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesDenyUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -51,7 +46,7 @@ export class DenyStageForm extends Form<DenyStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +1,23 @@
|
||||||
import { DummyStage, StagesApi } from "authentik-api";
|
import { DummyStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-dummy-form")
|
@customElement("ak-stage-dummy-form")
|
||||||
export class DummyStageForm extends Form<DummyStage> {
|
export class DummyStageForm extends ModelForm<DummyStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<DummyStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesDummyRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesDummyRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: DummyStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -30,9 +25,9 @@ export class DummyStageForm extends Form<DummyStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: DummyStage): Promise<DummyStage> => {
|
send = (data: DummyStage): Promise<DummyStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesDummyUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesDummyUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -51,7 +46,7 @@ export class DummyStageForm extends Form<DummyStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,32 +3,30 @@ import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement, property } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { first } from "../../../utils";
|
import { first } from "../../../utils";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-email-form")
|
@customElement("ak-stage-email-form")
|
||||||
export class EmailStageForm extends Form<EmailStage> {
|
export class EmailStageForm extends ModelForm<EmailStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<EmailStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesEmailRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesEmailRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
}).then(stage => {
|
||||||
this.stage = stage;
|
this.showConnectionSettings = !stage.useGlobalSettings;
|
||||||
|
return stage;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: EmailStage;
|
|
||||||
|
|
||||||
@property({type: Boolean})
|
@property({type: Boolean})
|
||||||
showConnectionSettings = false;
|
showConnectionSettings = false;
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -36,9 +34,9 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: EmailStage): Promise<EmailStage> => {
|
send = (data: EmailStage): Promise<EmailStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesEmailPartialUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesEmailPartialUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -61,28 +59,28 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
label=${t`SMTP Host`}
|
label=${t`SMTP Host`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="host">
|
name="host">
|
||||||
<input type="text" value="${ifDefined(this.stage?.host || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.host || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`SMTP Port`}
|
label=${t`SMTP Port`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="port">
|
name="port">
|
||||||
<input type="number" value="${first(this.stage?.port, 25)}" class="pf-c-form-control" required>
|
<input type="number" value="${first(this.instance?.port, 25)}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`SMTP Username`}
|
label=${t`SMTP Username`}
|
||||||
name="username">
|
name="username">
|
||||||
<input type="text" value="${ifDefined(this.stage?.username || "")}" class="pf-c-form-control">
|
<input type="text" value="${ifDefined(this.instance?.username || "")}" class="pf-c-form-control">
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`SMTP Password`}
|
label=${t`SMTP Password`}
|
||||||
?writeOnly=${this.stage !== undefined}
|
?writeOnly=${this.instance !== undefined}
|
||||||
name="password">
|
name="password">
|
||||||
<input type="text" value="${ifDefined(this.stage?.password || "")}" class="pf-c-form-control">
|
<input type="text" value="${ifDefined(this.instance?.password || "")}" class="pf-c-form-control">
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal name="useTls">
|
<ak-form-element-horizontal name="useTls">
|
||||||
<div class="pf-c-check">
|
<div class="pf-c-check">
|
||||||
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.stage?.useTls, true)}>
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.instance?.useTls, true)}>
|
||||||
<label class="pf-c-check__label">
|
<label class="pf-c-check__label">
|
||||||
${t`Use TLS`}
|
${t`Use TLS`}
|
||||||
</label>
|
</label>
|
||||||
|
@ -90,7 +88,7 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal name="useSsl">
|
<ak-form-element-horizontal name="useSsl">
|
||||||
<div class="pf-c-check">
|
<div class="pf-c-check">
|
||||||
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.stage?.useSsl, false)}>
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.instance?.useSsl, false)}>
|
||||||
<label class="pf-c-check__label">
|
<label class="pf-c-check__label">
|
||||||
${t`Use SSL`}
|
${t`Use SSL`}
|
||||||
</label>
|
</label>
|
||||||
|
@ -100,13 +98,13 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
label=${t`Timeout`}
|
label=${t`Timeout`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="timeout">
|
name="timeout">
|
||||||
<input type="number" value="${first(this.stage?.timeout, 30)}" class="pf-c-form-control" required>
|
<input type="number" value="${first(this.instance?.timeout, 30)}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`From address`}
|
label=${t`From address`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="fromAddress">
|
name="fromAddress">
|
||||||
<input type="text" value="${ifDefined(this.stage?.fromAddress || "system@authentik.local")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.fromAddress || "system@authentik.local")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
</ak-form-group>`;
|
</ak-form-group>`;
|
||||||
|
@ -121,7 +119,7 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -130,7 +128,7 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
<div slot="body" class="pf-c-form">
|
<div slot="body" class="pf-c-form">
|
||||||
<ak-form-element-horizontal name="useGlobalSettings">
|
<ak-form-element-horizontal name="useGlobalSettings">
|
||||||
<div class="pf-c-check">
|
<div class="pf-c-check">
|
||||||
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.stage?.useGlobalSettings, true)} @change=${(ev: Event) => {
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.instance?.useGlobalSettings, true)} @change=${(ev: Event) => {
|
||||||
const target = ev.target as HTMLInputElement;
|
const target = ev.target as HTMLInputElement;
|
||||||
this.showConnectionSettings = !target.checked;
|
this.showConnectionSettings = !target.checked;
|
||||||
}}>
|
}}>
|
||||||
|
@ -144,14 +142,14 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
label=${t`Token expiry`}
|
label=${t`Token expiry`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="tokenExpiry">
|
name="tokenExpiry">
|
||||||
<input type="number" value="${first(this.stage?.tokenExpiry, 30)}" class="pf-c-form-control" required>
|
<input type="number" value="${first(this.instance?.tokenExpiry, 30)}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`Time in minutes the token sent is valid.`}</p>
|
<p class="pf-c-form__helper-text">${t`Time in minutes the token sent is valid.`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`Subject`}
|
label=${t`Subject`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="subject">
|
name="subject">
|
||||||
<input type="text" value="${first(this.stage?.subject, "authentik")}" class="pf-c-form-control" required>
|
<input type="text" value="${first(this.instance?.subject, "authentik")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal
|
<ak-form-element-horizontal
|
||||||
label=${t`Template`}
|
label=${t`Template`}
|
||||||
|
@ -160,7 +158,7 @@ export class EmailStageForm extends Form<EmailStage> {
|
||||||
<select name="users" class="pf-c-form-control">
|
<select name="users" class="pf-c-form-control">
|
||||||
${until(new StagesApi(DEFAULT_CONFIG).stagesEmailTemplates().then(templates => {
|
${until(new StagesApi(DEFAULT_CONFIG).stagesEmailTemplates().then(templates => {
|
||||||
return templates.map(template => {
|
return templates.map(template => {
|
||||||
const selected = this.stage?.template === template.name;
|
const selected = this.instance?.template === template.name;
|
||||||
return html`<option value=${ifDefined(template.name)} ?selected=${selected}>
|
return html`<option value=${ifDefined(template.name)} ?selected=${selected}>
|
||||||
${template.description}
|
${template.description}
|
||||||
</option>`;
|
</option>`;
|
||||||
|
|
|
@ -1,31 +1,26 @@
|
||||||
import { FlowDesignationEnum, FlowsApi, IdentificationStage, IdentificationStageUserFieldsEnum, StagesApi } from "authentik-api";
|
import { FlowDesignationEnum, FlowsApi, IdentificationStage, IdentificationStageUserFieldsEnum, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
import { first } from "../../../utils";
|
import { first } from "../../../utils";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-identification-form")
|
@customElement("ak-stage-identification-form")
|
||||||
export class IdentificationStageForm extends Form<IdentificationStage> {
|
export class IdentificationStageForm extends ModelForm<IdentificationStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<IdentificationStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesIdentificationRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: IdentificationStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -33,9 +28,9 @@ export class IdentificationStageForm extends Form<IdentificationStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: IdentificationStage): Promise<IdentificationStage> => {
|
send = (data: IdentificationStage): Promise<IdentificationStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -46,7 +41,7 @@ export class IdentificationStageForm extends Form<IdentificationStage> {
|
||||||
};
|
};
|
||||||
|
|
||||||
isUserFieldSelected(field: IdentificationStageUserFieldsEnum): boolean {
|
isUserFieldSelected(field: IdentificationStageUserFieldsEnum): boolean {
|
||||||
return (this.stage?.userFields || []).filter(isField => {
|
return (this.instance?.userFields || []).filter(isField => {
|
||||||
return field === isField;
|
return field === isField;
|
||||||
}).length > 0;
|
}).length > 0;
|
||||||
}
|
}
|
||||||
|
@ -60,7 +55,7 @@ export class IdentificationStageForm extends Form<IdentificationStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -83,7 +78,7 @@ export class IdentificationStageForm extends Form<IdentificationStage> {
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal name="caseInsensitiveMatching">
|
<ak-form-element-horizontal name="caseInsensitiveMatching">
|
||||||
<div class="pf-c-check">
|
<div class="pf-c-check">
|
||||||
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.stage?.caseInsensitiveMatching, true)}>
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.instance?.caseInsensitiveMatching, true)}>
|
||||||
<label class="pf-c-check__label">
|
<label class="pf-c-check__label">
|
||||||
${t`Case insensitive matching`}
|
${t`Case insensitive matching`}
|
||||||
</label>
|
</label>
|
||||||
|
@ -92,7 +87,7 @@ export class IdentificationStageForm extends Form<IdentificationStage> {
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-element-horizontal name="showMatchedUser">
|
<ak-form-element-horizontal name="showMatchedUser">
|
||||||
<div class="pf-c-check">
|
<div class="pf-c-check">
|
||||||
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.stage?.showMatchedUser, true)}>
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.instance?.showMatchedUser, true)}>
|
||||||
<label class="pf-c-check__label">
|
<label class="pf-c-check__label">
|
||||||
${t`Show matched user`}
|
${t`Show matched user`}
|
||||||
</label>
|
</label>
|
||||||
|
@ -103,13 +98,13 @@ export class IdentificationStageForm extends Form<IdentificationStage> {
|
||||||
label=${t`Enrollment flow`}
|
label=${t`Enrollment flow`}
|
||||||
name="enrollmentFlow">
|
name="enrollmentFlow">
|
||||||
<select class="pf-c-form-control">
|
<select class="pf-c-form-control">
|
||||||
<option value="" ?selected=${this.stage?.enrollmentFlow === undefined}>---------</option>
|
<option value="" ?selected=${this.instance?.enrollmentFlow === undefined}>---------</option>
|
||||||
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
||||||
ordering: "pk",
|
ordering: "pk",
|
||||||
designation: FlowDesignationEnum.Enrollment,
|
designation: FlowDesignationEnum.Enrollment,
|
||||||
}).then(flows => {
|
}).then(flows => {
|
||||||
return flows.results.map(flow => {
|
return flows.results.map(flow => {
|
||||||
const selected = this.stage?.enrollmentFlow === flow.pk;
|
const selected = this.instance?.enrollmentFlow === flow.pk;
|
||||||
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
||||||
});
|
});
|
||||||
}), html`<option>${t`Loading...`}</option>`)}
|
}), html`<option>${t`Loading...`}</option>`)}
|
||||||
|
@ -120,13 +115,13 @@ export class IdentificationStageForm extends Form<IdentificationStage> {
|
||||||
label=${t`Recovery flow`}
|
label=${t`Recovery flow`}
|
||||||
name="recoveryFlow">
|
name="recoveryFlow">
|
||||||
<select class="pf-c-form-control">
|
<select class="pf-c-form-control">
|
||||||
<option value="" ?selected=${this.stage?.recoveryFlow === undefined}>---------</option>
|
<option value="" ?selected=${this.instance?.recoveryFlow === undefined}>---------</option>
|
||||||
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
||||||
ordering: "pk",
|
ordering: "pk",
|
||||||
designation: FlowDesignationEnum.Recovery,
|
designation: FlowDesignationEnum.Recovery,
|
||||||
}).then(flows => {
|
}).then(flows => {
|
||||||
return flows.results.map(flow => {
|
return flows.results.map(flow => {
|
||||||
const selected = this.stage?.recoveryFlow === flow.pk;
|
const selected = this.instance?.recoveryFlow === flow.pk;
|
||||||
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
||||||
});
|
});
|
||||||
}), html`<option>${t`Loading...`}</option>`)}
|
}), html`<option>${t`Loading...`}</option>`)}
|
||||||
|
|
|
@ -1,30 +1,25 @@
|
||||||
import { InvitationStage, StagesApi } from "authentik-api";
|
import { InvitationStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { first } from "../../../utils";
|
import { first } from "../../../utils";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-invitation-form")
|
@customElement("ak-stage-invitation-form")
|
||||||
export class InvitationStageForm extends Form<InvitationStage> {
|
export class InvitationStageForm extends ModelForm<InvitationStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<InvitationStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: InvitationStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -32,9 +27,9 @@ export class InvitationStageForm extends Form<InvitationStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: InvitationStage): Promise<InvitationStage> => {
|
send = (data: InvitationStage): Promise<InvitationStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -53,7 +48,7 @@ export class InvitationStageForm extends Form<InvitationStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -62,7 +57,7 @@ export class InvitationStageForm extends Form<InvitationStage> {
|
||||||
<div slot="body" class="pf-c-form">
|
<div slot="body" class="pf-c-form">
|
||||||
<ak-form-element-horizontal name="continueFlowWithoutInvitation">
|
<ak-form-element-horizontal name="continueFlowWithoutInvitation">
|
||||||
<div class="pf-c-check">
|
<div class="pf-c-check">
|
||||||
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.stage?.continueFlowWithoutInvitation, true)}>
|
<input type="checkbox" class="pf-c-check__input" ?checked=${first(this.instance?.continueFlowWithoutInvitation, true)}>
|
||||||
<label class="pf-c-check__label">
|
<label class="pf-c-check__label">
|
||||||
${t`Continue flow without invitation`}
|
${t`Continue flow without invitation`}
|
||||||
</label>
|
</label>
|
||||||
|
|
|
@ -1,31 +1,26 @@
|
||||||
import { FlowDesignationEnum, FlowsApi, PasswordStage, PasswordStageBackendsEnum, StagesApi } from "authentik-api";
|
import { FlowDesignationEnum, FlowsApi, PasswordStage, PasswordStageBackendsEnum, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
import { first } from "../../../utils";
|
import { first } from "../../../utils";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-password-form")
|
@customElement("ak-stage-password-form")
|
||||||
export class PasswordStageForm extends Form<PasswordStage> {
|
export class PasswordStageForm extends ModelForm<PasswordStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<PasswordStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesPasswordRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesPasswordRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: PasswordStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -33,9 +28,9 @@ export class PasswordStageForm extends Form<PasswordStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: PasswordStage): Promise<PasswordStage> => {
|
send = (data: PasswordStage): Promise<PasswordStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesPasswordUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesPasswordUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -46,7 +41,7 @@ export class PasswordStageForm extends Form<PasswordStage> {
|
||||||
};
|
};
|
||||||
|
|
||||||
isBackendSelected(field: PasswordStageBackendsEnum): boolean {
|
isBackendSelected(field: PasswordStageBackendsEnum): boolean {
|
||||||
return (this.stage?.backends || []).filter(isField => {
|
return (this.instance?.backends || []).filter(isField => {
|
||||||
return field === isField;
|
return field === isField;
|
||||||
}).length > 0;
|
}).length > 0;
|
||||||
}
|
}
|
||||||
|
@ -60,7 +55,7 @@ export class PasswordStageForm extends Form<PasswordStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -87,14 +82,14 @@ export class PasswordStageForm extends Form<PasswordStage> {
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="configureFlow">
|
name="configureFlow">
|
||||||
<select class="pf-c-form-control">
|
<select class="pf-c-form-control">
|
||||||
<option value="" ?selected=${this.stage?.configureFlow === undefined}>---------</option>
|
<option value="" ?selected=${this.instance?.configureFlow === undefined}>---------</option>
|
||||||
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
${until(new FlowsApi(DEFAULT_CONFIG).flowsInstancesList({
|
||||||
ordering: "pk",
|
ordering: "pk",
|
||||||
designation: FlowDesignationEnum.StageConfiguration,
|
designation: FlowDesignationEnum.StageConfiguration,
|
||||||
}).then(flows => {
|
}).then(flows => {
|
||||||
return flows.results.map(flow => {
|
return flows.results.map(flow => {
|
||||||
let selected = this.stage?.configureFlow === flow.pk;
|
let selected = this.instance?.configureFlow === flow.pk;
|
||||||
if (!this.stage?.pk && !this.stage?.configureFlow && flow.slug === "default-password-change") {
|
if (!this.instance?.pk && !this.instance?.configureFlow && flow.slug === "default-password-change") {
|
||||||
selected = true;
|
selected = true;
|
||||||
}
|
}
|
||||||
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
return html`<option value=${ifDefined(flow.pk)} ?selected=${selected}>${flow.name} (${flow.slug})</option>`;
|
||||||
|
@ -107,7 +102,7 @@ export class PasswordStageForm extends Form<PasswordStage> {
|
||||||
label=${t`Failed attempts before cancel`}
|
label=${t`Failed attempts before cancel`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="failedAttemptsBeforeCancel">
|
name="failedAttemptsBeforeCancel">
|
||||||
<input type="number" value="${first(this.stage?.failedAttemptsBeforeCancel, 5)}" class="pf-c-form-control" required>
|
<input type="number" value="${first(this.instance?.failedAttemptsBeforeCancel, 5)}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`How many attempts a user has before the flow is canceled. To lock the user out, use a reputation policy and a user_write stage.`}</p>
|
<p class="pf-c-form__helper-text">${t`How many attempts a user has before the flow is canceled. To lock the user out, use a reputation policy and a user_write stage.`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,32 +1,27 @@
|
||||||
import { PoliciesApi, PromptStage, StagesApi } from "authentik-api";
|
import { PoliciesApi, PromptStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import "../../../elements/forms/ModalForm";
|
import "../../../elements/forms/ModalForm";
|
||||||
import "./PromptForm";
|
import "./PromptForm";
|
||||||
import { until } from "lit-html/directives/until";
|
import { until } from "lit-html/directives/until";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-prompt-form")
|
@customElement("ak-stage-prompt-form")
|
||||||
export class PromptStageForm extends Form<PromptStage> {
|
export class PromptStageForm extends ModelForm<PromptStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<PromptStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesPromptStagesRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: PromptStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -34,9 +29,9 @@ export class PromptStageForm extends Form<PromptStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: PromptStage): Promise<PromptStage> => {
|
send = (data: PromptStage): Promise<PromptStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -55,7 +50,7 @@ export class PromptStageForm extends Form<PromptStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -71,7 +66,7 @@ export class PromptStageForm extends Form<PromptStage> {
|
||||||
ordering: "field_name"
|
ordering: "field_name"
|
||||||
}).then(prompts => {
|
}).then(prompts => {
|
||||||
return prompts.results.map(prompt => {
|
return prompts.results.map(prompt => {
|
||||||
const selected = Array.from(this.stage?.fields || []).some(su => {
|
const selected = Array.from(this.instance?.fields || []).some(su => {
|
||||||
return su == prompt.pk;
|
return su == prompt.pk;
|
||||||
});
|
});
|
||||||
return html`<option value=${ifDefined(prompt.pk)} ?selected=${selected}>
|
return html`<option value=${ifDefined(prompt.pk)} ?selected=${selected}>
|
||||||
|
@ -103,7 +98,7 @@ export class PromptStageForm extends Form<PromptStage> {
|
||||||
ordering: "name"
|
ordering: "name"
|
||||||
}).then(policies => {
|
}).then(policies => {
|
||||||
return policies.results.map(policy => {
|
return policies.results.map(policy => {
|
||||||
const selected = Array.from(this.stage?.validationPolicies || []).some(su => {
|
const selected = Array.from(this.instance?.validationPolicies || []).some(su => {
|
||||||
return su == policy.pk;
|
return su == policy.pk;
|
||||||
});
|
});
|
||||||
return html`<option value=${ifDefined(policy.pk)} ?selected=${selected}>
|
return html`<option value=${ifDefined(policy.pk)} ?selected=${selected}>
|
||||||
|
|
|
@ -1,28 +1,23 @@
|
||||||
import { UserDeleteStage, StagesApi } from "authentik-api";
|
import { UserDeleteStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-user-delete-form")
|
@customElement("ak-stage-user-delete-form")
|
||||||
export class UserDeleteStageForm extends Form<UserDeleteStage> {
|
export class UserDeleteStageForm extends ModelForm<UserDeleteStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<UserDeleteStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesUserDeleteRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: UserDeleteStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -30,9 +25,9 @@ export class UserDeleteStageForm extends Form<UserDeleteStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: UserDeleteStage): Promise<UserDeleteStage> => {
|
send = (data: UserDeleteStage): Promise<UserDeleteStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -52,7 +47,7 @@ export class UserDeleteStageForm extends Form<UserDeleteStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,29 +1,24 @@
|
||||||
import { UserLoginStage, StagesApi } from "authentik-api";
|
import { UserLoginStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
import "../../../elements/forms/FormGroup";
|
import "../../../elements/forms/FormGroup";
|
||||||
import { first } from "../../../utils";
|
import { first } from "../../../utils";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-user-login-form")
|
@customElement("ak-stage-user-login-form")
|
||||||
export class UserLoginStageForm extends Form<UserLoginStage> {
|
export class UserLoginStageForm extends ModelForm<UserLoginStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<UserLoginStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesUserLoginRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: UserLoginStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -31,9 +26,9 @@ export class UserLoginStageForm extends Form<UserLoginStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: UserLoginStage): Promise<UserLoginStage> => {
|
send = (data: UserLoginStage): Promise<UserLoginStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -52,7 +47,7 @@ export class UserLoginStageForm extends Form<UserLoginStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${first(this.stage?.name, "")}" class="pf-c-form-control" required>
|
<input type="text" value="${first(this.instance?.name, "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
<ak-form-group .expanded=${true}>
|
<ak-form-group .expanded=${true}>
|
||||||
<span slot="header">
|
<span slot="header">
|
||||||
|
@ -63,7 +58,7 @@ export class UserLoginStageForm extends Form<UserLoginStage> {
|
||||||
label=${t`Session duration`}
|
label=${t`Session duration`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="sessionDuration">
|
name="sessionDuration">
|
||||||
<input type="text" value="${first(this.stage?.sessionDuration, "seconds=0")}" class="pf-c-form-control" required>
|
<input type="text" value="${first(this.instance?.sessionDuration, "seconds=0")}" class="pf-c-form-control" required>
|
||||||
<p class="pf-c-form__helper-text">${t`Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed.`}</p>
|
<p class="pf-c-form__helper-text">${t`Determines how long a session lasts. Default of 0 seconds means that the sessions lasts until the browser is closed.`}</p>
|
||||||
<p class="pf-c-form__helper-text">${t`(Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
<p class="pf-c-form__helper-text">${t`(Format: hours=-1;minutes=-2;seconds=-3).`}</p>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
|
|
|
@ -1,28 +1,23 @@
|
||||||
import { UserLogoutStage, StagesApi } from "authentik-api";
|
import { UserLogoutStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-user-logout-form")
|
@customElement("ak-stage-user-logout-form")
|
||||||
export class UserLogoutStageForm extends Form<UserLogoutStage> {
|
export class UserLogoutStageForm extends ModelForm<UserLogoutStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<UserLogoutStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesUserLogoutRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: UserLogoutStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -30,9 +25,9 @@ export class UserLogoutStageForm extends Form<UserLogoutStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: UserLogoutStage): Promise<UserLogoutStage> => {
|
send = (data: UserLogoutStage): Promise<UserLogoutStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -51,7 +46,7 @@ export class UserLogoutStageForm extends Form<UserLogoutStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +1,23 @@
|
||||||
import { UserWriteStage, StagesApi } from "authentik-api";
|
import { UserWriteStage, StagesApi } from "authentik-api";
|
||||||
import { t } from "@lingui/macro";
|
import { t } from "@lingui/macro";
|
||||||
import { customElement, property } from "lit-element";
|
import { customElement } from "lit-element";
|
||||||
import { html, TemplateResult } from "lit-html";
|
import { html, TemplateResult } from "lit-html";
|
||||||
import { DEFAULT_CONFIG } from "../../../api/Config";
|
import { DEFAULT_CONFIG } from "../../../api/Config";
|
||||||
import { Form } from "../../../elements/forms/Form";
|
|
||||||
import { ifDefined } from "lit-html/directives/if-defined";
|
import { ifDefined } from "lit-html/directives/if-defined";
|
||||||
import "../../../elements/forms/HorizontalFormElement";
|
import "../../../elements/forms/HorizontalFormElement";
|
||||||
|
import { ModelForm } from "../../../elements/forms/ModelForm";
|
||||||
|
|
||||||
@customElement("ak-stage-user-write-form")
|
@customElement("ak-stage-user-write-form")
|
||||||
export class UserWriteStageForm extends Form<UserWriteStage> {
|
export class UserWriteStageForm extends ModelForm<UserWriteStage, string> {
|
||||||
|
|
||||||
set stageUUID(value: string) {
|
loadInstance(pk: string): Promise<UserWriteStage> {
|
||||||
new StagesApi(DEFAULT_CONFIG).stagesUserWriteRead({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteRead({
|
||||||
stageUuid: value,
|
stageUuid: pk,
|
||||||
}).then(stage => {
|
|
||||||
this.stage = stage;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@property({attribute: false})
|
|
||||||
stage?: UserWriteStage;
|
|
||||||
|
|
||||||
getSuccessMessage(): string {
|
getSuccessMessage(): string {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return t`Successfully updated stage.`;
|
return t`Successfully updated stage.`;
|
||||||
} else {
|
} else {
|
||||||
return t`Successfully created stage.`;
|
return t`Successfully created stage.`;
|
||||||
|
@ -30,9 +25,9 @@ export class UserWriteStageForm extends Form<UserWriteStage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
send = (data: UserWriteStage): Promise<UserWriteStage> => {
|
send = (data: UserWriteStage): Promise<UserWriteStage> => {
|
||||||
if (this.stage) {
|
if (this.instance) {
|
||||||
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteUpdate({
|
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteUpdate({
|
||||||
stageUuid: this.stage.pk || "",
|
stageUuid: this.instance.pk || "",
|
||||||
data: data
|
data: data
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -52,7 +47,7 @@ export class UserWriteStageForm extends Form<UserWriteStage> {
|
||||||
label=${t`Name`}
|
label=${t`Name`}
|
||||||
?required=${true}
|
?required=${true}
|
||||||
name="name">
|
name="name">
|
||||||
<input type="text" value="${ifDefined(this.stage?.name || "")}" class="pf-c-form-control" required>
|
<input type="text" value="${ifDefined(this.instance?.name || "")}" class="pf-c-form-control" required>
|
||||||
</ak-form-element-horizontal>
|
</ak-form-element-horizontal>
|
||||||
</form>`;
|
</form>`;
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue