mirror of
https://github.com/hashicorp/vault.git
synced 2026-05-28 04:10:44 -04:00
* 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>
53 lines
1.7 KiB
TypeScript
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.',
|
|
},
|
|
],
|
|
};
|
|
}
|