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) {