vault/ui/app/forms/oidc/assignment.ts
Vault Automation 41bfbebb5a
[UI] Ember Data Migration - OIDC Assignments (#14491) (#14657)
* updates oidc assignmenmts list view to use api service

* updates oidc assignments details view to use api service

* updates oidc assignment create and edit views to use api service and form class

* updates oidc assignment-form tests

* updates oidc-key-template component to use form class

* updates oidc-assignment-template component to use form class

* updates teardown in oidc-config clients tests to use api service

Co-authored-by: Jordan Reimer <zofskeez@gmail.com>
2026-05-11 08:37:31 -06:00

53 lines
1.7 KiB
TypeScript

/**
* Copyright IBM Corp. 2016, 2025
* SPDX-License-Identifier: BUSL-1.1
*/
import Form from 'vault/forms/form';
import FormField from 'vault/utils/forms/field';
import FormFieldGroup from 'vault/utils/forms/field-group';
import isPresent from '@ember/utils/lib/is_present';
import type { Validations } from 'vault/app-types';
import type { OidcWriteAssignmentRequest } from '@hashicorp/vault-client-typescript';
type OidcAssignmentFormData = OidcWriteAssignmentRequest & {
name: string;
};
export default class OidcAssignmentForm extends Form<OidcAssignmentFormData> {
formFieldGroups = [
new FormFieldGroup('default', [
new FormField('name', 'string', { editDisabled: true }),
// SearchSelect within the FormField component works in conjunction with Ember Data Models
// we can still use the component since it supports passing in an array of objects as options for the select
// yield out the fields so scopes can be fetched in the route and passed directly to SearchSelect
new FormField('entity_ids', undefined, {
label: 'Entities',
editType: 'yield',
}),
new FormField('group_ids', undefined, {
label: 'Groups',
editType: 'yield',
}),
]),
];
validations: Validations = {
name: [
{ type: 'presence', message: 'Name is required.' },
{
type: 'containsWhiteSpace',
message: 'Name cannot contain whitespace.',
},
],
targets: [
{
validator(data: OidcAssignmentFormData) {
return isPresent(data.entity_ids) || isPresent(data.group_ids);
},
message: 'At least one entity or group is required.',
},
],
};
}