import "@goauthentik/admin/flows/BoundStagesList"; import "@goauthentik/admin/flows/FlowDiagram"; import "@goauthentik/admin/flows/FlowForm"; import "@goauthentik/admin/policies/BoundPoliciesList"; import { DesignationToLabel } from "@goauthentik/app/admin/flows/utils"; import "@goauthentik/app/elements/rbac/ObjectPermissionsPage"; import { AndNext, DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import "@goauthentik/components/events/ObjectChangelog"; import { AKElement } from "@goauthentik/elements/Base"; import "@goauthentik/elements/PageHeader"; import "@goauthentik/elements/Tabs"; import "@goauthentik/elements/buttons/SpinnerButton"; import { msg } from "@lit/localize"; import { CSSResult, TemplateResult, css, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import PFButton from "@patternfly/patternfly/components/Button/button.css"; import PFCard from "@patternfly/patternfly/components/Card/card.css"; import PFContent from "@patternfly/patternfly/components/Content/content.css"; import PFDescriptionList from "@patternfly/patternfly/components/DescriptionList/description-list.css"; import PFPage from "@patternfly/patternfly/components/Page/page.css"; import PFGrid from "@patternfly/patternfly/layouts/Grid/grid.css"; import PFBase from "@patternfly/patternfly/patternfly-base.css"; import { Flow, FlowsApi, RbacPermissionsAssignedByUsersListModelEnum, ResponseError, } from "@goauthentik/api"; @customElement("ak-flow-view") export class FlowViewPage extends AKElement { @property() set flowSlug(value: string) { new FlowsApi(DEFAULT_CONFIG) .flowsInstancesRetrieve({ slug: value, }) .then((flow) => { this.flow = flow; }); } @property({ attribute: false }) flow!: Flow; static get styles(): CSSResult[] { return [PFBase, PFPage, PFDescriptionList, PFButton, PFCard, PFContent, PFGrid].concat(css` img.pf-icon { max-height: 24px; } ak-tabs { height: 100%; } `); } render(): TemplateResult { if (!this.flow) { return html``; } return html` ${msg("Flow Info")} ${msg("Name")} ${this.flow.name} ${msg("Slug")} ${this.flow.slug} ${msg("Designation")} ${DesignationToLabel(this.flow.designation)} ${msg("Related actions")} ${msg("Update")} ${msg("Update Flow")} ${msg("Edit")} ${msg("Execute flow")} { const finalURL = `${ window.location.origin }/if/flow/${this.flow.slug}/${AndNext( `${window.location.pathname}#${window.location.hash}`, )}`; window.open(finalURL, "_blank"); }} > ${msg("Normal")} { new FlowsApi(DEFAULT_CONFIG) .flowsInstancesExecuteRetrieve({ slug: this.flow.slug, }) .then((link) => { const finalURL = `${ link.link }${AndNext( `${window.location.pathname}#${window.location.hash}`, )}`; window.open(finalURL, "_blank"); }); }} > ${msg("with current user")} { new FlowsApi(DEFAULT_CONFIG) .flowsInstancesExecuteRetrieve({ slug: this.flow.slug, }) .then((link) => { const finalURL = `${ link.link }?${encodeURI( `inspector&next=/#${window.location.hash}`, )}`; window.open(finalURL, "_blank"); }) .catch((exc: ResponseError) => { // This request can return a HTTP 400 when a flow // is not applicable. window.open( exc.response.url, "_blank", ); }); }} > ${msg("with inspector")} ${msg("Export flow")} ${msg("Export")} ${msg("Diagram")} ${msg("Changelog")} ${msg("These bindings control which users can access this flow.")} `; } }
${this.flow.slug}