diff --git a/web/src/pages/applications/ApplicationCheckAccessForm.ts b/web/src/pages/applications/ApplicationCheckAccessForm.ts new file mode 100644 index 0000000000..145d6c43ba --- /dev/null +++ b/web/src/pages/applications/ApplicationCheckAccessForm.ts @@ -0,0 +1,80 @@ +import { Application, CoreApi, CheckAccessRequestRequest, PolicyTestResult } from "authentik-api"; +import { t } from "@lingui/macro"; +import { customElement, property } from "lit-element"; +import { html, TemplateResult } from "lit-html"; +import { DEFAULT_CONFIG } from "../../api/Config"; +import { Form } from "../../elements/forms/Form"; +import { until } from "lit-html/directives/until"; +import "../../elements/forms/HorizontalFormElement"; + +@customElement("ak-application-check-access-form") +export class ApplicationCheckAccessForm extends Form { + + @property({attribute: false}) + application!: Application; + + @property({ attribute: false}) + result?: PolicyTestResult; + + @property({ attribute: false}) + request?: CheckAccessRequestRequest; + + getSuccessMessage(): string { + return t`Successfully sent test-request.`; + } + + send = (data: CheckAccessRequestRequest): Promise => { + this.request = data; + return new CoreApi(DEFAULT_CONFIG).coreApplicationsCheckAccessCreate({ + slug: this.application?.slug, + checkAccessRequestRequest: data, + }).then(result => this.result = result); + }; + + renderResult(): TemplateResult { + return html` + +
+
+ ${this.result?.passing ? t`Yes` : t`No`} +
+
+
+ +
+
+
    + ${(this.result?.messages || []).length > 0 ? + this.result?.messages?.map(m => { + return html`
  • ${m}
  • `; + }) : + html`
  • -
  • `} +
+
+
+
`; + } + + renderForm(): TemplateResult { + return html`
+ + + + ${this.result ? this.renderResult(): html``} +
`; + } + +} diff --git a/web/src/pages/applications/ApplicationViewPage.ts b/web/src/pages/applications/ApplicationViewPage.ts index 56099ebbbe..8dc940d7e6 100644 --- a/web/src/pages/applications/ApplicationViewPage.ts +++ b/web/src/pages/applications/ApplicationViewPage.ts @@ -8,6 +8,7 @@ import "../../elements/EmptyState"; import "../../elements/events/ObjectChangelog"; import "../policies/BoundPoliciesList"; import "./ApplicationForm"; +import "./ApplicationCheckAccessForm"; import "../../elements/PageHeader"; import { Application, CoreApi } from "authentik-api"; import { DEFAULT_CONFIG } from "../../api/Config"; @@ -111,6 +112,28 @@ export class ApplicationViewPage extends LitElement { +
+
+ ${t`Check access`} +
+
+
+ + + ${t`Check`} + + + ${t`Check Application access`} + + + + + +
+
+
${this.application.launchUrl ? html`