Files
authentik/web/src/elements/rbac/ObjectPermissionModal.ts
2023-10-25 20:15:28 +02:00

80 lines
2.7 KiB
TypeScript

import { AKElement } from "@goauthentik/app/elements/Base";
import "@goauthentik/elements/forms/ModalForm";
import { ModelForm } from "@goauthentik/elements/forms/ModelForm";
import "@goauthentik/elements/rbac/ObjectPermissionsPage";
import { msg } from "@lit/localize";
import { CSSResult, TemplateResult, html } from "lit";
import { customElement, property } from "lit/decorators.js";
import PFBanner from "@patternfly/patternfly/components/Banner/banner.css";
import PFButton from "@patternfly/patternfly/components/Button/button.css";
import PFBase from "@patternfly/patternfly/patternfly-base.css";
import { RbacPermissionsAssignedByUsersListModelEnum } from "@goauthentik/api";
/**
* This is a bit of a hack to get the viewport checking from ModelForm,
* even though we actually don't need a form here.
* #TODO: Rework this in the future
*/
@customElement("ak-rbac-object-permission-modal-form")
export class ObjectPermissionsPageForm extends ModelForm<unknown, string> {
@property()
model?: RbacPermissionsAssignedByUsersListModelEnum;
@property()
objectPk?: string | number;
loadInstance(): Promise<unknown> {
return Promise.resolve();
}
send(): Promise<unknown> {
return Promise.resolve();
}
renderForm(): TemplateResult {
return html`<ak-rbac-object-permission-page
.model=${this.model}
.objectPk=${this.objectPk}
slot="form"
>
</ak-rbac-object-permission-page>`;
}
}
@customElement("ak-rbac-object-permission-modal")
export class ObjectPermissionModal extends AKElement {
@property()
model?: RbacPermissionsAssignedByUsersListModelEnum;
@property()
objectPk?: string | number;
static get styles(): CSSResult[] {
return [PFBase, PFButton, PFBanner];
}
render(): TemplateResult {
return html`
<ak-forms-modal .showSubmitButton=${false} cancelText=${msg("Close")}>
<span slot="header"> ${msg("Update Permissions")} </span>
<div class="pf-c-banner pf-m-info" slot="above-form">
${msg("RBAC is in preview.")}
<a href="mailto:hello@goauthentik.io">${msg("Send us feedback!")}</a>
</div>
<ak-rbac-object-permission-modal-form
slot="form"
.model=${this.model}
.objectPk=${this.objectPk}
></ak-rbac-object-permission-modal-form>
<button slot="trigger" class="pf-c-button pf-m-plain">
<pf-tooltip position="top" content=${msg("Permissions")}>
<i class="fas fa-lock"></i>
</pf-tooltip>
</button>
</ak-forms-modal>
`;
}
}