import { DEFAULT_CONFIG } from "@goauthentik/common/api/config"; import "@goauthentik/components/ak-toggle-group"; import "@goauthentik/elements/chips/Chip"; import "@goauthentik/elements/chips/ChipGroup"; 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/rbac/PermissionSelectModal"; import { msg } from "@lit/localize"; import { TemplateResult, html } from "lit"; import { customElement, property, state } from "lit/decorators.js"; import { Permission, RbacApi } from "@goauthentik/api"; interface UserPermissionAssign { permissions: string[]; } @customElement("ak-user-permission-form") export class UserPermissionForm extends ModelForm { @state() permissionsToAdd: Permission[] = []; @property({ type: Number }) userId?: number; async load(): Promise {} loadInstance(): Promise { throw new Error("Method not implemented."); } getSuccessMessage(): string { return msg("Successfully assigned permission."); } async send(data: UserPermissionAssign): Promise { await new RbacApi(DEFAULT_CONFIG).rbacPermissionsAssignedByUsersAssignCreate({ id: this.userId || 0, permissionAssignRequest: { permissions: data.permissions, }, }); this.permissionsToAdd = []; return; } renderForm(): TemplateResult { return html`
{ this.permissionsToAdd = items; this.requestUpdate(); return Promise.resolve(); }} >
${this.permissionsToAdd.map((permission) => { return html` { const idx = this.permissionsToAdd.indexOf(permission); this.permissionsToAdd.splice(idx, 1); this.requestUpdate(); }} > ${permission.name} `; })}
`; } }