diff --git a/ui/admin/app/components/form/credential/index.hbs b/ui/admin/app/components/form/credential/index.hbs index 7fedeec6e..26302ac71 100644 --- a/ui/admin/app/components/form/credential/index.hbs +++ b/ui/admin/app/components/form/credential/index.hbs @@ -4,12 +4,11 @@ }} {{#if @model.type}} - {{component - (concat 'form/credential/' @model.type) - model=@model - types=this.credentialTypes - submit=@submit - cancel=@cancel - changeType=@changeType - }} + {{/if}} \ No newline at end of file diff --git a/ui/admin/app/components/form/credential/index.js b/ui/admin/app/components/form/credential/index.js index e089aebf1..2b9153d11 100644 --- a/ui/admin/app/components/form/credential/index.js +++ b/ui/admin/app/components/form/credential/index.js @@ -4,7 +4,29 @@ */ import Component from '@glimmer/component'; -import { TYPES_CREDENTIAL } from 'api/models/credential'; +import { assert } from '@ember/debug'; +import { + TYPES_CREDENTIAL, + TYPE_CREDENTIAL_USERNAME_PASSWORD, + TYPE_CREDENTIAL_SSH_PRIVATE_KEY, + TYPE_CREDENTIAL_JSON, + TYPE_CREDENTIAL_USERNAME_PASSWORD_DOMAIN, + TYPE_CREDENTIAL_PASSWORD, +} from 'api/models/credential'; +import usernamePasswordFormComponent from './username_password'; +import sshPrivateKeyFormComponent from './ssh_private_key'; +import jsonFormComponent from './json'; +import usernamePasswordDomainFormComponent from './username_password_domain'; +import passwordFormComponent from './password'; + +const modelTypeToComponent = { + [TYPE_CREDENTIAL_USERNAME_PASSWORD]: usernamePasswordFormComponent, + [TYPE_CREDENTIAL_SSH_PRIVATE_KEY]: sshPrivateKeyFormComponent, + [TYPE_CREDENTIAL_JSON]: jsonFormComponent, + [TYPE_CREDENTIAL_USERNAME_PASSWORD_DOMAIN]: + usernamePasswordDomainFormComponent, + [TYPE_CREDENTIAL_PASSWORD]: passwordFormComponent, +}; export default class FormCredentialComponent extends Component { // =attributes @@ -16,4 +38,17 @@ export default class FormCredentialComponent extends Component { get credentialTypes() { return TYPES_CREDENTIAL; } + + /** + * Returns the form component for the credential model type + * @type {Component} + */ + get credentialFormComponent() { + const component = modelTypeToComponent[this.args.model.type]; + assert( + `Mapped component must exist for credential type: ${this.args.model.type}`, + component, + ); + return component; + } }