diff --git a/awx/ui_next/src/screens/Credential/CredentialAdd/CredentialAdd.jsx b/awx/ui_next/src/screens/Credential/CredentialAdd/CredentialAdd.jsx index da8cffdca0..3b75634928 100644 --- a/awx/ui_next/src/screens/Credential/CredentialAdd/CredentialAdd.jsx +++ b/awx/ui_next/src/screens/Credential/CredentialAdd/CredentialAdd.jsx @@ -26,9 +26,9 @@ function CredentialAdd({ me }) { } = useRequest( useCallback( async (values, credentialTypesMap) => { - const { - inputs: { fields: possibleFields }, - } = credentialTypesMap[values.credential_type]; + const { inputs: credentialTypeInputs } = credentialTypesMap[ + values.credential_type + ]; const { inputs, @@ -39,6 +39,7 @@ function CredentialAdd({ me }) { const nonPluginInputs = {}; const pluginInputs = {}; + const possibleFields = credentialTypeInputs.fields || []; possibleFields.forEach(field => { const input = inputs[field.id]; diff --git a/awx/ui_next/src/screens/Credential/CredentialEdit/CredentialEdit.jsx b/awx/ui_next/src/screens/Credential/CredentialEdit/CredentialEdit.jsx index 766f7146d9..79fe6c5f7c 100644 --- a/awx/ui_next/src/screens/Credential/CredentialEdit/CredentialEdit.jsx +++ b/awx/ui_next/src/screens/Credential/CredentialEdit/CredentialEdit.jsx @@ -22,9 +22,9 @@ function CredentialEdit({ credential, me }) { const { error: submitError, request: submitRequest, result } = useRequest( useCallback( async (values, credentialTypesMap, inputSourceMap) => { - const { - inputs: { fields: possibleFields }, - } = credentialTypesMap[values.credential_type]; + const { inputs: credentialTypeInputs } = credentialTypesMap[ + values.credential_type + ]; const { inputs, @@ -35,6 +35,7 @@ function CredentialEdit({ credential, me }) { const nonPluginInputs = {}; const pluginInputs = {}; + const possibleFields = credentialTypeInputs.fields || []; possibleFields.forEach(field => { const input = inputs[field.id]; diff --git a/awx/ui_next/src/screens/Credential/shared/CredentialForm.jsx b/awx/ui_next/src/screens/Credential/shared/CredentialForm.jsx index 166b245ee7..8e0547bcfa 100644 --- a/awx/ui_next/src/screens/Credential/shared/CredentialForm.jsx +++ b/awx/ui_next/src/screens/Credential/shared/CredentialForm.jsx @@ -35,7 +35,8 @@ function CredentialFormFields({ .sort((a, b) => (a.label > b.label ? 1 : -1)); const resetSubFormFields = (newCredentialType, form) => { - credentialTypes[newCredentialType].inputs.fields.forEach( + const fields = credentialTypes[newCredentialType].inputs.fields || []; + fields.forEach( ({ ask_at_runtime, type, id, choices, default: defaultValue }) => { if ( parseInt(newCredentialType, 10) === form.initialValues.credential_type @@ -124,11 +125,13 @@ function CredentialFormFields({ }} /> - {credTypeField.value !== undefined && credTypeField.value !== '' && ( - - )} + {credTypeField.value !== undefined && + credTypeField.value !== '' && + credentialTypes[credTypeField.value]?.inputs?.fields && ( + + )} ); } @@ -152,7 +155,8 @@ function CredentialForm({ }; Object.values(credentialTypes).forEach(credentialType => { - credentialType.inputs.fields.forEach( + const fields = credentialType.inputs.fields || []; + fields.forEach( ({ ask_at_runtime, type, id, choices, default: defaultValue }) => { if (credential?.inputs && credential.inputs[id]) { if (ask_at_runtime) {