web: expressing success (#7830)

* web: expressing success

Ever see an idiom that just, I dunno, *annoyed* you?

Automated tools for the win.

* web: repetition, repetition, repetition!  [throws chair]

* web: giving the de-duplication treatment to policy mappings.

* Created a BaseStageForm with success message and canonical primary key type for for Providers, Sources, and Stages.
This commit is contained in:
Ken Sternberg 2023-12-13 07:13:28 -08:00 committed by GitHub
parent f1b6793145
commit b181c551a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
61 changed files with 184 additions and 475 deletions

View File

@ -75,11 +75,9 @@ export class ApplicationForm extends ModelForm<Application, string> {
clearIcon = false;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated application.");
} else {
return msg("Successfully created application.");
}
return this.instance
? msg("Successfully updated application.")
: msg("Successfully created application.");
}
async send(data: Application): Promise<Application | void> {

View File

@ -44,11 +44,9 @@ export class BlueprintForm extends ModelForm<BlueprintInstance, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated instance.");
} else {
return msg("Successfully created instance.");
}
return this.instance
? msg("Successfully updated instance.")
: msg("Successfully created instance.");
}
static get styles(): CSSResult[] {

View File

@ -19,11 +19,9 @@ export class CertificateKeyPairForm extends ModelForm<CertificateKeyPair, string
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated certificate-key pair.");
} else {
return msg("Successfully created certificate-key pair.");
}
return this.instance
? msg("Successfully updated certificate-key pair.")
: msg("Successfully created certificate-key pair.");
}
async send(data: CertificateKeyPair): Promise<CertificateKeyPair> {

View File

@ -37,11 +37,9 @@ export class RuleForm extends ModelForm<NotificationRule, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated rule.");
} else {
return msg("Successfully created rule.");
}
return this.instance
? msg("Successfully updated rule.")
: msg("Successfully created rule.");
}
async send(data: NotificationRule): Promise<NotificationRule> {

View File

@ -36,11 +36,9 @@ export class TransportForm extends ModelForm<NotificationTransport, string> {
showWebhook = false;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated transport.");
} else {
return msg("Successfully created transport.");
}
return this.instance
? msg("Successfully updated transport.")
: msg("Successfully created transport.");
}
async send(data: NotificationTransport): Promise<NotificationTransport> {

View File

@ -34,11 +34,9 @@ export class FlowForm extends ModelForm<Flow, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated flow.");
} else {
return msg("Successfully created flow.");
}
return this.instance
? msg("Successfully updated flow.")
: msg("Successfully created flow.");
}
@property({ type: Boolean })

View File

@ -46,11 +46,9 @@ export class GroupForm extends ModelForm<Group, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated group.");
} else {
return msg("Successfully created group.");
}
return this.instance
? msg("Successfully updated group.")
: msg("Successfully created group.");
}
async load(): Promise<void> {

View File

@ -79,11 +79,9 @@ export class OutpostForm extends ModelForm<Outpost, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated outpost.");
} else {
return msg("Successfully created outpost.");
}
return this.instance
? msg("Successfully updated outpost.")
: msg("Successfully created outpost.");
}
async send(data: Outpost): Promise<Outpost> {

View File

@ -21,11 +21,9 @@ export class ServiceConnectionDockerForm extends ModelForm<DockerServiceConnecti
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated integration.");
} else {
return msg("Successfully created integration.");
}
return this.instance
? msg("Successfully updated integration.")
: msg("Successfully created integration.");
}
async send(data: DockerServiceConnection): Promise<DockerServiceConnection> {

View File

@ -25,11 +25,9 @@ export class ServiceConnectionKubernetesForm extends ModelForm<
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated integration.");
} else {
return msg("Successfully created integration.");
}
return this.instance
? msg("Successfully updated integration.")
: msg("Successfully created integration.");
}
async send(data: KubernetesServiceConnection): Promise<KubernetesServiceConnection> {

View File

@ -0,0 +1,11 @@
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
export abstract class BasePolicyForm<T> extends ModelForm<T, string> {
getSuccessMessage(): string {
return this.instance
? msg("Successfully updated policy.")
: msg("Successfully created policy.");
}
}

View File

@ -1,8 +1,8 @@
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -12,21 +12,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { DummyPolicy, PoliciesApi } from "@goauthentik/api";
@customElement("ak-policy-dummy-form")
export class DummyPolicyForm extends ModelForm<DummyPolicy, string> {
export class DummyPolicyForm extends BasePolicyForm<DummyPolicy> {
loadInstance(pk: string): Promise<DummyPolicy> {
return new PoliciesApi(DEFAULT_CONFIG).policiesDummyRetrieve({
policyUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated policy.");
} else {
return msg("Successfully created policy.");
}
}
async send(data: DummyPolicy): Promise<DummyPolicy> {
if (this.instance) {
return new PoliciesApi(DEFAULT_CONFIG).policiesDummyUpdate({

View File

@ -1,8 +1,8 @@
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -20,21 +20,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-policy-event-matcher-form")
export class EventMatcherPolicyForm extends ModelForm<EventMatcherPolicy, string> {
export class EventMatcherPolicyForm extends BasePolicyForm<EventMatcherPolicy> {
loadInstance(pk: string): Promise<EventMatcherPolicy> {
return new PoliciesApi(DEFAULT_CONFIG).policiesEventMatcherRetrieve({
policyUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated policy.");
} else {
return msg("Successfully created policy.");
}
}
async send(data: EventMatcherPolicy): Promise<EventMatcherPolicy> {
if (data.action?.toString() === "") data.action = null;
if (data.clientIp?.toString() === "") data.clientIp = null;

View File

@ -1,8 +1,8 @@
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -12,21 +12,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { PasswordExpiryPolicy, PoliciesApi } from "@goauthentik/api";
@customElement("ak-policy-password-expiry-form")
export class PasswordExpiryPolicyForm extends ModelForm<PasswordExpiryPolicy, string> {
export class PasswordExpiryPolicyForm extends BasePolicyForm<PasswordExpiryPolicy> {
loadInstance(pk: string): Promise<PasswordExpiryPolicy> {
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordExpiryRetrieve({
policyUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated policy.");
} else {
return msg("Successfully created policy.");
}
}
async send(data: PasswordExpiryPolicy): Promise<PasswordExpiryPolicy> {
if (this.instance) {
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordExpiryUpdate({

View File

@ -1,3 +1,4 @@
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { docLink } from "@goauthentik/common/global";
import { first } from "@goauthentik/common/utils";
@ -5,7 +6,6 @@ import "@goauthentik/elements/CodeMirror";
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -15,21 +15,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { ExpressionPolicy, PoliciesApi } from "@goauthentik/api";
@customElement("ak-policy-expression-form")
export class ExpressionPolicyForm extends ModelForm<ExpressionPolicy, string> {
export class ExpressionPolicyForm extends BasePolicyForm<ExpressionPolicy> {
loadInstance(pk: string): Promise<ExpressionPolicy> {
return new PoliciesApi(DEFAULT_CONFIG).policiesExpressionRetrieve({
policyUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated policy.");
} else {
return msg("Successfully created policy.");
}
}
async send(data: ExpressionPolicy): Promise<ExpressionPolicy> {
if (this.instance) {
return new PoliciesApi(DEFAULT_CONFIG).policiesExpressionUpdate({

View File

@ -1,8 +1,8 @@
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -12,7 +12,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { PasswordPolicy, PoliciesApi } from "@goauthentik/api";
@customElement("ak-policy-password-form")
export class PasswordPolicyForm extends ModelForm<PasswordPolicy, string> {
export class PasswordPolicyForm extends BasePolicyForm<PasswordPolicy> {
@state()
showStatic = true;
@ -32,14 +32,6 @@ export class PasswordPolicyForm extends ModelForm<PasswordPolicy, string> {
return policy;
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated policy.");
} else {
return msg("Successfully created policy.");
}
}
async send(data: PasswordPolicy): Promise<PasswordPolicy> {
if (this.instance) {
return new PoliciesApi(DEFAULT_CONFIG).policiesPasswordUpdate({

View File

@ -1,8 +1,8 @@
import { BasePolicyForm } from "@goauthentik/admin/policies/BasePolicyForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -12,21 +12,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { PoliciesApi, ReputationPolicy } from "@goauthentik/api";
@customElement("ak-policy-reputation-form")
export class ReputationPolicyForm extends ModelForm<ReputationPolicy, string> {
export class ReputationPolicyForm extends BasePolicyForm<ReputationPolicy> {
loadInstance(pk: string): Promise<ReputationPolicy> {
return new PoliciesApi(DEFAULT_CONFIG).policiesReputationRetrieve({
policyUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated policy.");
} else {
return msg("Successfully created policy.");
}
}
async send(data: ReputationPolicy): Promise<ReputationPolicy> {
if (this.instance) {
return new PoliciesApi(DEFAULT_CONFIG).policiesReputationUpdate({

View File

@ -0,0 +1,11 @@
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
export abstract class BasePropertyMappingForm<T> extends ModelForm<T, string> {
getSuccessMessage(): string {
return this.instance
? msg("Successfully updated mapping.")
: msg("Successfully created mapping.");
}
}

View File

@ -1,9 +1,9 @@
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { docLink } from "@goauthentik/common/global";
import "@goauthentik/elements/CodeMirror";
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { LDAPPropertyMapping, PropertymappingsApi } from "@goauthentik/api";
@customElement("ak-property-mapping-ldap-form")
export class PropertyMappingLDAPForm extends ModelForm<LDAPPropertyMapping, string> {
export class PropertyMappingLDAPForm extends BasePropertyMappingForm<LDAPPropertyMapping> {
loadInstance(pk: string): Promise<LDAPPropertyMapping> {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsLdapRetrieve({
pmUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated mapping.");
} else {
return msg("Successfully created mapping.");
}
}
async send(data: LDAPPropertyMapping): Promise<LDAPPropertyMapping> {
if (this.instance) {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsLdapUpdate({

View File

@ -21,11 +21,9 @@ export class PropertyMappingNotification extends ModelForm<NotificationWebhookMa
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated mapping.");
} else {
return msg("Successfully created mapping.");
}
return this.instance
? msg("Successfully updated mapping.")
: msg("Successfully created mapping.");
}
async send(data: NotificationWebhookMapping): Promise<NotificationWebhookMapping> {

View File

@ -1,9 +1,9 @@
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { docLink } from "@goauthentik/common/global";
import "@goauthentik/elements/CodeMirror";
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { PropertymappingsApi, SAMLPropertyMapping } from "@goauthentik/api";
@customElement("ak-property-mapping-saml-form")
export class PropertyMappingSAMLForm extends ModelForm<SAMLPropertyMapping, string> {
export class PropertyMappingSAMLForm extends BasePropertyMappingForm<SAMLPropertyMapping> {
loadInstance(pk: string): Promise<SAMLPropertyMapping> {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsSamlRetrieve({
pmUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated mapping.");
} else {
return msg("Successfully created mapping.");
}
}
async send(data: SAMLPropertyMapping): Promise<SAMLPropertyMapping> {
if (this.instance) {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsSamlUpdate({

View File

@ -1,9 +1,9 @@
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { docLink } from "@goauthentik/common/global";
import "@goauthentik/elements/CodeMirror";
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { PropertymappingsApi, SCIMMapping } from "@goauthentik/api";
@customElement("ak-property-mapping-scim-form")
export class PropertyMappingSCIMForm extends ModelForm<SCIMMapping, string> {
export class PropertyMappingSCIMForm extends BasePropertyMappingForm<SCIMMapping> {
loadInstance(pk: string): Promise<SCIMMapping> {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScimRetrieve({
pmUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated mapping.");
} else {
return msg("Successfully created mapping.");
}
}
async send(data: SCIMMapping): Promise<SCIMMapping> {
if (this.instance) {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScimUpdate({

View File

@ -1,9 +1,9 @@
import { BasePropertyMappingForm } from "@goauthentik/admin/property-mappings/BasePropertyMappingForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { docLink } from "@goauthentik/common/global";
import "@goauthentik/elements/CodeMirror";
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -13,21 +13,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { PropertymappingsApi, ScopeMapping } from "@goauthentik/api";
@customElement("ak-property-mapping-scope-form")
export class PropertyMappingScopeForm extends ModelForm<ScopeMapping, string> {
export class PropertyMappingScopeForm extends BasePropertyMappingForm<ScopeMapping> {
loadInstance(pk: string): Promise<ScopeMapping> {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScopeRetrieve({
pmUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated mapping.");
} else {
return msg("Successfully created mapping.");
}
}
async send(data: ScopeMapping): Promise<ScopeMapping> {
if (this.instance) {
return new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsScopeUpdate({

View File

@ -0,0 +1,11 @@
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
export abstract class BaseProviderForm<T> extends ModelForm<T, number> {
getSuccessMessage(): string {
return this.instance
? msg("Successfully updated provider.")
: msg("Successfully created provider.");
}
}

View File

@ -1,11 +1,11 @@
import "@goauthentik/admin/common/ak-crypto-certificate-search";
import "@goauthentik/admin/common/ak-flow-search/ak-tenanted-flow-search";
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import { rootInterface } from "@goauthentik/elements/Base";
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";
@ -25,21 +25,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-provider-ldap-form")
export class LDAPProviderFormPage extends ModelForm<LDAPProvider, number> {
export class LDAPProviderFormPage extends BaseProviderForm<LDAPProvider> {
async loadInstance(pk: number): Promise<LDAPProvider> {
return new ProvidersApi(DEFAULT_CONFIG).providersLdapRetrieve({
id: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated provider.");
} else {
return msg("Successfully created provider.");
}
}
async send(data: LDAPProvider): Promise<LDAPProvider> {
if (this.instance) {
return new ProvidersApi(DEFAULT_CONFIG).providersLdapUpdate({

View File

@ -1,5 +1,6 @@
import "@goauthentik/admin/common/ak-crypto-certificate-search";
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { ascii_letters, digits, first, randomString } from "@goauthentik/common/utils";
import "@goauthentik/components/ak-radio-input";
@ -7,7 +8,6 @@ import "@goauthentik/components/ak-text-input";
import "@goauthentik/components/ak-textarea-input";
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";
@ -116,7 +116,7 @@ export const redirectUriHelp = html`${redirectUriHelpMessages.map(
*/
@customElement("ak-provider-oauth2-form")
export class OAuth2ProviderFormPage extends ModelForm<OAuth2Provider, number> {
export class OAuth2ProviderFormPage extends BaseProviderForm<OAuth2Provider> {
propertyMappings?: PaginatedScopeMappingList;
oauthSources?: PaginatedOAuthSourceList;
@ -143,14 +143,6 @@ export class OAuth2ProviderFormPage extends ModelForm<OAuth2Provider, number> {
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated provider.");
} else {
return msg("Successfully created provider.");
}
}
async send(data: OAuth2Provider): Promise<OAuth2Provider> {
if (this.instance) {
return new ProvidersApi(DEFAULT_CONFIG).providersOauth2Update({

View File

@ -1,11 +1,11 @@
import "@goauthentik/admin/common/ak-crypto-certificate-search";
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/components/ak-toggle-group";
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";
@ -30,7 +30,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-provider-proxy-form")
export class ProxyProviderFormPage extends ModelForm<ProxyProvider, number> {
export class ProxyProviderFormPage extends BaseProviderForm<ProxyProvider> {
static get styles(): CSSResult[] {
return [...super.styles, PFContent, PFList, PFSpacing];
}
@ -65,14 +65,6 @@ export class ProxyProviderFormPage extends ModelForm<ProxyProvider, number> {
@state()
mode: ProxyMode = ProxyMode.Proxy;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated provider.");
} else {
return msg("Successfully created provider.");
}
}
async send(data: ProxyProvider): Promise<ProxyProvider> {
data.mode = this.mode;
if (this.mode !== ProxyMode.ForwardDomain) {

View File

@ -1,9 +1,9 @@
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { ascii_letters, digits, first, randomString } from "@goauthentik/common/utils";
import { rootInterface } from "@goauthentik/elements/Base";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -14,21 +14,13 @@ import { customElement } from "lit/decorators.js";
import { FlowsInstancesListDesignationEnum, ProvidersApi, RadiusProvider } from "@goauthentik/api";
@customElement("ak-provider-radius-form")
export class RadiusProviderFormPage extends ModelForm<RadiusProvider, number> {
export class RadiusProviderFormPage extends BaseProviderForm<RadiusProvider> {
loadInstance(pk: number): Promise<RadiusProvider> {
return new ProvidersApi(DEFAULT_CONFIG).providersRadiusRetrieve({
id: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated provider.");
} else {
return msg("Successfully created provider.");
}
}
async send(data: RadiusProvider): Promise<RadiusProvider> {
if (this.instance) {
return new ProvidersApi(DEFAULT_CONFIG).providersRadiusUpdate({

View File

@ -1,9 +1,9 @@
import "@goauthentik/admin/common/ak-crypto-certificate-search";
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
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";
@ -27,7 +27,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-provider-saml-form")
export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
export class SAMLProviderFormPage extends BaseProviderForm<SAMLProvider> {
loadInstance(pk: number): Promise<SAMLProvider> {
return new ProvidersApi(DEFAULT_CONFIG).providersSamlRetrieve({
id: pk,
@ -44,14 +44,6 @@ export class SAMLProviderFormPage extends ModelForm<SAMLProvider, number> {
propertyMappings?: PaginatedSAMLPropertyMappingList;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated provider.");
} else {
return msg("Successfully created provider.");
}
}
async send(data: SAMLProvider): Promise<SAMLProvider> {
if (this.instance) {
return new ProvidersApi(DEFAULT_CONFIG).providersSamlUpdate({

View File

@ -1,8 +1,8 @@
import { BaseProviderForm } from "@goauthentik/admin/providers/BaseProviderForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
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";
@ -22,7 +22,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-provider-scim-form")
export class SCIMProviderFormPage extends ModelForm<SCIMProvider, number> {
export class SCIMProviderFormPage extends BaseProviderForm<SCIMProvider> {
loadInstance(pk: number): Promise<SCIMProvider> {
return new ProvidersApi(DEFAULT_CONFIG).providersScimRetrieve({
id: pk,
@ -39,14 +39,6 @@ export class SCIMProviderFormPage extends ModelForm<SCIMProvider, number> {
propertyMappings?: PaginatedSCIMMappingList;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated provider.");
} else {
return msg("Successfully created provider.");
}
}
async send(data: SCIMProvider): Promise<SCIMProvider> {
if (this.instance) {
return new ProvidersApi(DEFAULT_CONFIG).providersScimUpdate({

View File

@ -21,11 +21,9 @@ export class RoleForm extends ModelForm<Role, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated role.");
} else {
return msg("Successfully created role.");
}
return this.instance
? msg("Successfully updated role.")
: msg("Successfully created role.");
}
async send(data: Role): Promise<Role> {

View File

@ -0,0 +1,11 @@
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
export abstract class BaseSourceForm<T> extends ModelForm<T, string> {
getSuccessMessage(): string {
return this.instance
? msg("Successfully updated source.")
: msg("Successfully created source.");
}
}

View File

@ -1,10 +1,10 @@
import "@goauthentik/admin/common/ak-crypto-certificate-search";
import { placeholderHelperText } from "@goauthentik/admin/helperText";
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -24,7 +24,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-source-ldap-form")
export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
export class LDAPSourceForm extends BaseSourceForm<LDAPSource> {
loadInstance(pk: string): Promise<LDAPSource> {
return new SourcesApi(DEFAULT_CONFIG).sourcesLdapRetrieve({
slug: pk,
@ -41,14 +41,6 @@ export class LDAPSourceForm extends ModelForm<LDAPSource, string> {
propertyMappings?: PaginatedLDAPPropertyMappingList;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated source.");
} else {
return msg("Successfully created source.");
}
}
async send(data: LDAPSource): Promise<LDAPSource> {
if (this.instance) {
return new SourcesApi(DEFAULT_CONFIG).sourcesLdapPartialUpdate({

View File

@ -1,5 +1,6 @@
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
@ -8,7 +9,6 @@ import "@goauthentik/elements/CodeMirror";
import { CodeMirrorMode } from "@goauthentik/elements/CodeMirror";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -28,7 +28,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-source-oauth-form")
export class OAuthSourceForm extends ModelForm<OAuthSource, string> {
export class OAuthSourceForm extends BaseSourceForm<OAuthSource> {
async loadInstance(pk: string): Promise<OAuthSource> {
const source = await new SourcesApi(DEFAULT_CONFIG).sourcesOauthRetrieve({
slug: pk,
@ -61,14 +61,6 @@ export class OAuthSourceForm extends ModelForm<OAuthSource, string> {
@state()
clearIcon = false;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated source.");
} else {
return msg("Successfully created source.");
}
}
async send(data: OAuthSource): Promise<OAuthSource> {
data.providerType = (this.providerType?.slug || "") as ProviderTypeEnum;
let source: OAuthSource;

View File

@ -1,5 +1,6 @@
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
import { PlexAPIClient, PlexResource, popupCenterScreen } from "@goauthentik/common/helpers/plex";
@ -7,7 +8,6 @@ import { ascii_letters, digits, first, randomString } from "@goauthentik/common/
import { rootInterface } from "@goauthentik/elements/Base";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -24,7 +24,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-source-plex-form")
export class PlexSourceForm extends ModelForm<PlexSource, string> {
export class PlexSourceForm extends BaseSourceForm<PlexSource> {
async loadInstance(pk: string): Promise<PlexSource> {
const source = await new SourcesApi(DEFAULT_CONFIG).sourcesPlexRetrieve({
slug: pk,
@ -50,14 +50,6 @@ export class PlexSourceForm extends ModelForm<PlexSource, string> {
} as PlexSource;
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated source.");
} else {
return msg("Successfully created source.");
}
}
async send(data: PlexSource): Promise<PlexSource> {
data.plexToken = this.plexToken || "";
let source: PlexSource;

View File

@ -1,13 +1,13 @@
import "@goauthentik/admin/common/ak-crypto-certificate-search";
import "@goauthentik/admin/common/ak-flow-search/ak-source-flow-search";
import { iconHelperText, placeholderHelperText } from "@goauthentik/admin/helperText";
import { BaseSourceForm } from "@goauthentik/admin/sources/BaseSourceForm";
import { UserMatchingModeToLabel } from "@goauthentik/admin/sources/oauth/utils";
import { DEFAULT_CONFIG, config } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import { rootInterface } from "@goauthentik/elements/Base";
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/utils/TimeDeltaHelp";
@ -29,7 +29,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-source-saml-form")
export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
export class SAMLSourceForm extends BaseSourceForm<SAMLSource> {
@state()
clearIcon = false;
@ -41,14 +41,6 @@ export class SAMLSourceForm extends ModelForm<SAMLSource, string> {
return source;
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated source.");
} else {
return msg("Successfully created source.");
}
}
async send(data: SAMLSource): Promise<SAMLSource> {
let source: SAMLSource;
if (this.instance) {

View File

@ -0,0 +1,11 @@
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
export abstract class BaseStageForm<T> extends ModelForm<T, string> {
getSuccessMessage(): string {
return this.instance
? msg("Successfully updated stage.")
: msg("Successfully created stage.");
}
}

View File

@ -1,9 +1,9 @@
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -21,21 +21,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-authenticator-duo-form")
export class AuthenticatorDuoStageForm extends ModelForm<AuthenticatorDuoStage, string> {
export class AuthenticatorDuoStageForm extends BaseStageForm<AuthenticatorDuoStage> {
loadInstance(pk: string): Promise<AuthenticatorDuoStage> {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorDuoRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: AuthenticatorDuoStage): Promise<AuthenticatorDuoStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorDuoPartialUpdate({

View File

@ -1,9 +1,9 @@
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
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";
@ -26,7 +26,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-authenticator-sms-form")
export class AuthenticatorSMSStageForm extends ModelForm<AuthenticatorSMSStage, string> {
export class AuthenticatorSMSStageForm extends BaseStageForm<AuthenticatorSMSStage> {
loadInstance(pk: string): Promise<AuthenticatorSMSStage> {
return new StagesApi(DEFAULT_CONFIG)
.stagesAuthenticatorSmsRetrieve({
@ -45,14 +45,6 @@ export class AuthenticatorSMSStageForm extends ModelForm<AuthenticatorSMSStage,
@property({ attribute: false })
authType?: AuthTypeEnum;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: AuthenticatorSMSStage): Promise<AuthenticatorSMSStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorSmsUpdate({

View File

@ -1,8 +1,8 @@
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -19,21 +19,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-authenticator-static-form")
export class AuthenticatorStaticStageForm extends ModelForm<AuthenticatorStaticStage, string> {
export class AuthenticatorStaticStageForm extends BaseStageForm<AuthenticatorStaticStage> {
loadInstance(pk: string): Promise<AuthenticatorStaticStage> {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: AuthenticatorStaticStage): Promise<AuthenticatorStaticStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorStaticUpdate({

View File

@ -1,9 +1,9 @@
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -21,21 +21,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-authenticator-totp-form")
export class AuthenticatorTOTPStageForm extends ModelForm<AuthenticatorTOTPStage, string> {
export class AuthenticatorTOTPStageForm extends BaseStageForm<AuthenticatorTOTPStage> {
loadInstance(pk: string): Promise<AuthenticatorTOTPStage> {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: AuthenticatorTOTPStage): Promise<AuthenticatorTOTPStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorTotpUpdate({

View File

@ -1,7 +1,7 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
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/utils/TimeDeltaHelp";
@ -20,7 +20,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-authenticator-validate-form")
export class AuthenticatorValidateStageForm extends ModelForm<AuthenticatorValidateStage, string> {
export class AuthenticatorValidateStageForm extends BaseStageForm<AuthenticatorValidateStage> {
async loadInstance(pk: string): Promise<AuthenticatorValidateStage> {
const stage = await new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateRetrieve({
stageUuid: pk,
@ -41,14 +41,6 @@ export class AuthenticatorValidateStageForm extends ModelForm<AuthenticatorValid
@property({ type: Boolean })
showConfigurationStages = true;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: AuthenticatorValidateStage): Promise<AuthenticatorValidateStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorValidateUpdate({

View File

@ -1,8 +1,8 @@
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/Radio";
import "@goauthentik/elements/forms/SearchSelect";
@ -23,21 +23,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-authenticator-webauthn-form")
export class AuthenticateWebAuthnStageForm extends ModelForm<AuthenticateWebAuthnStage, string> {
export class AuthenticateWebAuthnStageForm extends BaseStageForm<AuthenticateWebAuthnStage> {
loadInstance(pk: string): Promise<AuthenticateWebAuthnStage> {
return new StagesApi(DEFAULT_CONFIG).stagesAuthenticatorWebauthnRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: AuthenticateWebAuthnStage): Promise<AuthenticateWebAuthnStage> {
if (data.authenticatorAttachment?.toString() === "") {
data.authenticatorAttachment = null;

View File

@ -1,7 +1,7 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -11,21 +11,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { CaptchaStage, CaptchaStageRequest, StagesApi } from "@goauthentik/api";
@customElement("ak-stage-captcha-form")
export class CaptchaStageForm extends ModelForm<CaptchaStage, string> {
export class CaptchaStageForm extends BaseStageForm<CaptchaStage> {
loadInstance(pk: string): Promise<CaptchaStage> {
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: CaptchaStage): Promise<CaptchaStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesCaptchaPartialUpdate({

View File

@ -1,7 +1,7 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/utils/TimeDeltaHelp";
import { msg } from "@lit/localize";
@ -12,7 +12,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { ConsentStage, ConsentStageModeEnum, StagesApi } from "@goauthentik/api";
@customElement("ak-stage-consent-form")
export class ConsentStageForm extends ModelForm<ConsentStage, string> {
export class ConsentStageForm extends BaseStageForm<ConsentStage> {
loadInstance(pk: string): Promise<ConsentStage> {
return new StagesApi(DEFAULT_CONFIG)
.stagesConsentRetrieve({
@ -27,14 +27,6 @@ export class ConsentStageForm extends ModelForm<ConsentStage, string> {
@property({ type: Boolean })
showExpiresIn = false;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: ConsentStage): Promise<ConsentStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesConsentUpdate({

View File

@ -1,6 +1,6 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -10,21 +10,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { DenyStage, StagesApi } from "@goauthentik/api";
@customElement("ak-stage-deny-form")
export class DenyStageForm extends ModelForm<DenyStage, string> {
export class DenyStageForm extends BaseStageForm<DenyStage> {
loadInstance(pk: string): Promise<DenyStage> {
return new StagesApi(DEFAULT_CONFIG).stagesDenyRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: DenyStage): Promise<DenyStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesDenyUpdate({

View File

@ -1,7 +1,7 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -11,21 +11,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { DummyStage, StagesApi } from "@goauthentik/api";
@customElement("ak-stage-dummy-form")
export class DummyStageForm extends ModelForm<DummyStage, string> {
export class DummyStageForm extends BaseStageForm<DummyStage> {
loadInstance(pk: string): Promise<DummyStage> {
return new StagesApi(DEFAULT_CONFIG).stagesDummyRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: DummyStage): Promise<DummyStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesDummyUpdate({

View File

@ -1,8 +1,8 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -12,7 +12,7 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { EmailStage, StagesApi, TypeCreate } from "@goauthentik/api";
@customElement("ak-stage-email-form")
export class EmailStageForm extends ModelForm<EmailStage, string> {
export class EmailStageForm extends BaseStageForm<EmailStage> {
async loadInstance(pk: string): Promise<EmailStage> {
const stage = await new StagesApi(DEFAULT_CONFIG).stagesEmailRetrieve({
stageUuid: pk,
@ -30,14 +30,6 @@ export class EmailStageForm extends ModelForm<EmailStage, string> {
@property({ type: Boolean })
showConnectionSettings = false;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: EmailStage): Promise<EmailStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesEmailPartialUpdate({

View File

@ -1,9 +1,9 @@
import "@goauthentik/admin/common/ak-flow-search/ak-flow-search";
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first, groupBy } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -23,7 +23,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-identification-form")
export class IdentificationStageForm extends ModelForm<IdentificationStage, string> {
export class IdentificationStageForm extends BaseStageForm<IdentificationStage> {
loadInstance(pk: string): Promise<IdentificationStage> {
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationRetrieve({
stageUuid: pk,
@ -38,14 +38,6 @@ export class IdentificationStageForm extends ModelForm<IdentificationStage, stri
sources?: PaginatedSourceList;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: IdentificationStage): Promise<IdentificationStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesIdentificationUpdate({

View File

@ -23,11 +23,9 @@ export class InvitationForm extends ModelForm<Invitation, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated invitation.");
} else {
return msg("Successfully created invitation.");
}
return this.instance
? msg("Successfully updated invitation.")
: msg("Successfully created invitation.");
}
async send(data: Invitation): Promise<Invitation> {

View File

@ -1,8 +1,8 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -11,21 +11,13 @@ import { customElement } from "lit/decorators.js";
import { InvitationStage, StagesApi } from "@goauthentik/api";
@customElement("ak-stage-invitation-form")
export class InvitationStageForm extends ModelForm<InvitationStage, string> {
export class InvitationStageForm extends BaseStageForm<InvitationStage> {
loadInstance(pk: string): Promise<InvitationStage> {
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: InvitationStage): Promise<InvitationStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesInvitationStagesUpdate({

View File

@ -1,9 +1,9 @@
import { RenderFlowOption } from "@goauthentik/admin/flows/utils";
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/forms/SearchSelect";
import { msg } from "@lit/localize";
@ -22,21 +22,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-password-form")
export class PasswordStageForm extends ModelForm<PasswordStage, string> {
export class PasswordStageForm extends BaseStageForm<PasswordStage> {
loadInstance(pk: string): Promise<PasswordStage> {
return new StagesApi(DEFAULT_CONFIG).stagesPasswordRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: PasswordStage): Promise<PasswordStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesPasswordUpdate({

View File

@ -90,11 +90,9 @@ export class PromptForm extends ModelForm<Prompt, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated prompt.");
} else {
return msg("Successfully created prompt.");
}
return this.instance
? msg("Successfully updated prompt.")
: msg("Successfully created prompt.");
}
static get styles(): CSSResult[] {

View File

@ -1,9 +1,9 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import "@goauthentik/admin/stages/prompt/PromptForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import "@goauthentik/elements/forms/ModalForm";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg, str } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -19,7 +19,7 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-prompt-form")
export class PromptStageForm extends ModelForm<PromptStage, string> {
export class PromptStageForm extends BaseStageForm<PromptStage> {
loadInstance(pk: string): Promise<PromptStage> {
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesRetrieve({
stageUuid: pk,
@ -38,14 +38,6 @@ export class PromptStageForm extends ModelForm<PromptStage, string> {
prompts?: PaginatedPromptList;
policies?: PaginatedPolicyList;
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: PromptStage): Promise<PromptStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesPromptStagesUpdate({

View File

@ -1,6 +1,6 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -10,21 +10,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { StagesApi, UserDeleteStage } from "@goauthentik/api";
@customElement("ak-stage-user-delete-form")
export class UserDeleteStageForm extends ModelForm<UserDeleteStage, string> {
export class UserDeleteStageForm extends BaseStageForm<UserDeleteStage> {
loadInstance(pk: string): Promise<UserDeleteStage> {
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: UserDeleteStage): Promise<UserDeleteStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesUserDeleteUpdate({

View File

@ -1,9 +1,9 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
import "@goauthentik/elements/Alert";
import "@goauthentik/elements/forms/FormGroup";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/utils/TimeDeltaHelp";
import { msg } from "@lit/localize";
@ -13,21 +13,13 @@ import { customElement } from "lit/decorators.js";
import { StagesApi, UserLoginStage } from "@goauthentik/api";
@customElement("ak-stage-user-login-form")
export class UserLoginStageForm extends ModelForm<UserLoginStage, string> {
export class UserLoginStageForm extends BaseStageForm<UserLoginStage> {
loadInstance(pk: string): Promise<UserLoginStage> {
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: UserLoginStage): Promise<UserLoginStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesUserLoginUpdate({

View File

@ -1,6 +1,6 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import "@goauthentik/elements/forms/HorizontalFormElement";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import { msg } from "@lit/localize";
import { TemplateResult, html } from "lit";
@ -10,21 +10,13 @@ import { ifDefined } from "lit/directives/if-defined.js";
import { StagesApi, UserLogoutStage } from "@goauthentik/api";
@customElement("ak-stage-user-logout-form")
export class UserLogoutStageForm extends ModelForm<UserLogoutStage, string> {
export class UserLogoutStageForm extends BaseStageForm<UserLogoutStage> {
loadInstance(pk: string): Promise<UserLogoutStage> {
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: UserLogoutStage): Promise<UserLogoutStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesUserLogoutUpdate({

View File

@ -1,9 +1,9 @@
import { BaseStageForm } from "@goauthentik/admin/stages/BaseStageForm";
import { UserCreationModeEnum } from "@goauthentik/api/dist/models/UserCreationModeEnum";
import { DEFAULT_CONFIG } from "@goauthentik/common/api/config";
import { first } from "@goauthentik/common/utils";
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";
@ -22,21 +22,13 @@ import {
} from "@goauthentik/api";
@customElement("ak-stage-user-write-form")
export class UserWriteStageForm extends ModelForm<UserWriteStage, string> {
export class UserWriteStageForm extends BaseStageForm<UserWriteStage> {
loadInstance(pk: string): Promise<UserWriteStage> {
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteRetrieve({
stageUuid: pk,
});
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated stage.");
} else {
return msg("Successfully created stage.");
}
}
async send(data: UserWriteStage): Promise<UserWriteStage> {
if (this.instance) {
return new StagesApi(DEFAULT_CONFIG).stagesUserWriteUpdate({

View File

@ -26,11 +26,9 @@ export class TenantForm extends ModelForm<Tenant, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated tenant.");
} else {
return msg("Successfully created tenant.");
}
return this.instance
? msg("Successfully updated tenant.")
: msg("Successfully created tenant.");
}
async send(data: Tenant): Promise<Tenant> {

View File

@ -26,11 +26,9 @@ export class TokenForm extends ModelForm<Token, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated token.");
} else {
return msg("Successfully created token.");
}
return this.instance
? msg("Successfully updated token.")
: msg("Successfully created token.");
}
async send(data: Token): Promise<Token> {

View File

@ -21,11 +21,9 @@ export class UserTokenForm extends ModelForm<Token, string> {
}
getSuccessMessage(): string {
if (this.instance) {
return msg("Successfully updated token.");
} else {
return msg("Successfully created token.");
}
return this.instance
? msg("Successfully updated token.")
: msg("Successfully created token.");
}
async send(data: Token): Promise<Token> {