core: add option to select group for property mapping testing (#9834)

* make naming consistent, p1

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* p2

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

* core: add option to select group for property mapping testing

Signed-off-by: Jens Langhammer <jens@goauthentik.io>

---------

Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
Jens L
2024-05-24 13:32:19 +02:00
committed by GitHub
parent d44d5a44a1
commit 0974456ac8
14 changed files with 116 additions and 47 deletions

View File

@ -14,16 +14,18 @@ import { ifDefined } from "lit/directives/if-defined.js";
import {
CoreApi,
CoreGroupsListRequest,
CoreUsersListRequest,
PolicyTestRequest,
Group,
PropertyMapping,
PropertyMappingTestRequest,
PropertyMappingTestResult,
PropertymappingsApi,
User,
} from "@goauthentik/api";
@customElement("ak-property-mapping-test-form")
export class PolicyTestForm extends Form<PolicyTestRequest> {
export class PolicyTestForm extends Form<PropertyMappingTestRequest> {
@property({ attribute: false })
mapping?: PropertyMapping;
@ -31,17 +33,17 @@ export class PolicyTestForm extends Form<PolicyTestRequest> {
result?: PropertyMappingTestResult;
@property({ attribute: false })
request?: PolicyTestRequest;
request?: PropertyMappingTestRequest;
getSuccessMessage(): string {
return msg("Successfully sent test-request.");
}
async send(data: PolicyTestRequest): Promise<PropertyMappingTestResult> {
async send(data: PropertyMappingTestRequest): Promise<PropertyMappingTestResult> {
this.request = data;
const result = await new PropertymappingsApi(DEFAULT_CONFIG).propertymappingsAllTestCreate({
pmUuid: this.mapping?.pk || "",
policyTestRequest: data,
propertyMappingTestRequest: data,
formatResult: true,
});
return (this.result = result);
@ -122,7 +124,7 @@ export class PolicyTestForm extends Form<PolicyTestRequest> {
}
renderForm(): TemplateResult {
return html`<ak-form-element-horizontal label=${msg("User")} ?required=${true} name="user">
return html`<ak-form-element-horizontal label=${msg("User")} name="user">
<ak-search-select
.fetchObjects=${async (query?: string): Promise<User[]> => {
const args: CoreUsersListRequest = {
@ -144,7 +146,31 @@ export class PolicyTestForm extends Form<PolicyTestRequest> {
return user?.pk;
}}
.selected=${(user: User): boolean => {
return this.request?.user.toString() === user.pk.toString();
return this.request?.user?.toString() === user.pk.toString();
}}
>
</ak-search-select>
</ak-form-element-horizontal>
<ak-form-element-horizontal label=${msg("Group")} name="group">
<ak-search-select
.fetchObjects=${async (query?: string): Promise<Group[]> => {
const args: CoreGroupsListRequest = {
ordering: "name",
};
if (query !== undefined) {
args.search = query;
}
const groups = await new CoreApi(DEFAULT_CONFIG).coreGroupsList(args);
return groups.results;
}}
.renderElement=${(group: Group): string => {
return group.name;
}}
.value=${(group: Group | undefined): string | undefined => {
return group?.pk;
}}
.selected=${(group: Group): boolean => {
return this.request?.group?.toString() === group.pk.toString();
}}
>
</ak-search-select>