From e36ee56de18779d1979a229ff87d2037dc37ea2a Mon Sep 17 00:00:00 2001 From: Zhihe Li Date: Wed, 31 May 2023 20:13:56 -0400 Subject: [PATCH] Merge from main (#305) Merge from main --- .../api/addon/generated/models/auth-method.js | 2 +- addons/api/addon/generated/models/target.js | 13 +++++ addons/api/addon/models/target.js | 6 --- .../api/mirage/generated/factories/target.js | 1 + .../unit/serializers/auth-method-test.js | 49 +++++++++++++++++++ .../api/tests/unit/serializers/target-test.js | 6 +++ addons/core/translations/form/en-us.yaml | 3 -- addons/core/translations/resources/en-us.yaml | 6 +++ .../form/host-catalog/aws/index.hbs | 2 +- .../form/host-catalog/azure/index.hbs | 2 +- .../form/host-catalog/static/index.hbs | 26 ---------- .../components/form/target/details/index.hbs | 27 +++++++++- 12 files changed, 103 insertions(+), 40 deletions(-) diff --git a/addons/api/addon/generated/models/auth-method.js b/addons/api/addon/generated/models/auth-method.js index 85ef9fe24..eeef31ec0 100644 --- a/addons/api/addon/generated/models/auth-method.js +++ b/addons/api/addon/generated/models/auth-method.js @@ -61,7 +61,7 @@ export default class GeneratedAuthMethodModel extends BaseModel { @attr('string', { isNestedAttribute: true }) client_id; - @attr('string', { isNestedAttribute: true }) client_secret; + @attr('string', { isNestedAttribute: true, isSecret: true }) client_secret; @attr('string', { readOnly: true, isNestedAttribute: true }) client_secret_hmac; diff --git a/addons/api/addon/generated/models/target.js b/addons/api/addon/generated/models/target.js index 19ee4b2f3..d363a9d03 100644 --- a/addons/api/addon/generated/models/target.js +++ b/addons/api/addon/generated/models/target.js @@ -84,6 +84,19 @@ export default class GeneratedTargetModel extends BaseModel { }) address; + @attr('number', { + isNestedAttribute: true, + description: 'The default port a target should use if present.', + }) + default_port; + + @attr('number', { + isNestedAttribute: true, + description: + "The default port that will be listened on by the client's local proxy.", + }) + default_client_port; + @attr('string', { description: 'The storage bucket associated with this target.', isNestedAttribute: true, diff --git a/addons/api/addon/models/target.js b/addons/api/addon/models/target.js index ae5060563..ec7b12e4e 100644 --- a/addons/api/addon/models/target.js +++ b/addons/api/addon/models/target.js @@ -18,12 +18,6 @@ export default class TargetModel extends GeneratedTargetModel { // =attributes - @attr('number', { - isNestedAttribute: true, - description: 'The default port a target should use if present.', - }) - default_port; - /** * @type Array */ diff --git a/addons/api/mirage/generated/factories/target.js b/addons/api/mirage/generated/factories/target.js index cf868541a..f551efda2 100644 --- a/addons/api/mirage/generated/factories/target.js +++ b/addons/api/mirage/generated/factories/target.js @@ -17,5 +17,6 @@ export default Factory.extend({ updated_time: () => faker.date.recent(), disabled: () => faker.datatype.boolean(), default_port: () => faker.datatype.number(), + default_client_port: () => faker.datatype.number(), version: () => faker.datatype.number(), }); diff --git a/addons/api/tests/unit/serializers/auth-method-test.js b/addons/api/tests/unit/serializers/auth-method-test.js index f9989a5f3..c38bd0e56 100644 --- a/addons/api/tests/unit/serializers/auth-method-test.js +++ b/addons/api/tests/unit/serializers/auth-method-test.js @@ -89,6 +89,55 @@ module('Unit | Serializer | auth method', function (hooks) { }); }); + test("it doesn't serialize client secrets when not set", function (assert) { + assert.expect(1); + let store = this.owner.lookup('service:store'); + let record = store.createRecord('auth-method', { + type: TYPE_AUTH_METHOD_OIDC, + name: 'OIDC Auth Method', + state: 'foo', + account_claim_maps: [{ from: 'foo', to: 'bar' }], + claims_scopes: [{ value: 'profile' }, { value: 'email' }], + signing_algorithms: [{ value: 'RS256' }, { value: 'RS384' }], + allowed_audiences: [ + { value: 'www.alice.com' }, + { value: 'www.alice.com/admin' }, + ], + idp_ca_certs: [ + { value: 'certificate-1234' }, + { value: 'certificate-5678' }, + ], + api_url_prefix: 'protocol://host:port/foo', + client_id: 'id123', + client_secret: null, + disable_discovered_config_validation: true, + dry_run: true, + issuer: 'http://www.example.net', + max_age: 500, + }); + + let serializedRecord = record.serialize(); + + assert.deepEqual(serializedRecord, { + type: TYPE_AUTH_METHOD_OIDC, + name: 'OIDC Auth Method', + description: null, + attributes: { + account_claim_maps: ['foo=bar'], + claims_scopes: ['profile', 'email'], + signing_algorithms: ['RS256', 'RS384'], + allowed_audiences: ['www.alice.com', 'www.alice.com/admin'], + idp_ca_certs: ['certificate-1234', 'certificate-5678'], + api_url_prefix: 'protocol://host:port/foo', + client_id: 'id123', + disable_discovered_config_validation: true, + dry_run: true, + issuer: 'http://www.example.net', + max_age: 500, + }, + }); + }); + test('it serializes OIDC records with only state and version when `adapterOptions.state` is passed', function (assert) { assert.expect(1); const store = this.owner.lookup('service:store'); diff --git a/addons/api/tests/unit/serializers/target-test.js b/addons/api/tests/unit/serializers/target-test.js index 676dde493..6b1fe308d 100644 --- a/addons/api/tests/unit/serializers/target-test.js +++ b/addons/api/tests/unit/serializers/target-test.js @@ -31,6 +31,7 @@ module('Unit | Serializer | target', function (hooks) { type: 'org', }, default_port: 1234, + default_client_port: 4321, version: 1, type: TYPE_TARGET_TCP, address: '0.0.0.0', @@ -51,6 +52,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: null, attributes: { default_port: 1234, + default_client_port: 4321, enable_session_recording: false, storage_bucket_id: null, }, @@ -160,6 +162,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: null, attributes: { default_port: 1234, + default_client_port: null, enable_session_recording: true, storage_bucket_id: 'bucketID', }, @@ -197,6 +200,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: null, attributes: { default_port: 1234, + default_client_port: null, enable_session_recording: false, storage_bucket_id: null, }, @@ -234,6 +238,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: null, attributes: { default_port: 1234, + default_client_port: null, enable_session_recording: false, storage_bucket_id: null, }, @@ -271,6 +276,7 @@ module('Unit | Serializer | target', function (hooks) { ingress_worker_filter: 'ingress worker', attributes: { default_port: 1234, + default_client_port: null, enable_session_recording: false, storage_bucket_id: null, }, diff --git a/addons/core/translations/form/en-us.yaml b/addons/core/translations/form/en-us.yaml index 26605561d..7c2236ef1 100644 --- a/addons/core/translations/form/en-us.yaml +++ b/addons/core/translations/form/en-us.yaml @@ -33,9 +33,6 @@ grant: address: label: Address help: An IP, host name, or other routable address -default_port: - label: Default Port - help: The default port on which to connect current_password: label: Current Password new_password: diff --git a/addons/core/translations/resources/en-us.yaml b/addons/core/translations/resources/en-us.yaml index 089f2dd42..4ada52c62 100644 --- a/addons/core/translations/resources/en-us.yaml +++ b/addons/core/translations/resources/en-us.yaml @@ -434,6 +434,12 @@ target: worker_filter: label: Worker Filter help: Deprecated. Boolean expression to filter the workers that are allowed to satisfy this request. + default_port: + label: Default Port + help: The default port on which to connect. + default_client_port: + label: Default Client Port + help: The local proxy port on which to listen by default when a session is started on a client. sidebar: label: Session Recording help: Record SSH sessions on this target and save them to an Amazon S3 bucket. diff --git a/ui/admin/app/components/form/host-catalog/aws/index.hbs b/ui/admin/app/components/form/host-catalog/aws/index.hbs index ceb9c1838..abfbb5401 100644 --- a/ui/admin/app/components/form/host-catalog/aws/index.hbs +++ b/ui/admin/app/components/form/host-catalog/aws/index.hbs @@ -69,7 +69,7 @@ {{/each}} - + {{t 'titles.provider'}} {{t 'titles.choose-a-provider'}} {{t 'descriptions.choose-a-provider'}} diff --git a/ui/admin/app/components/form/host-catalog/azure/index.hbs b/ui/admin/app/components/form/host-catalog/azure/index.hbs index 51f1bc29c..238a3e334 100644 --- a/ui/admin/app/components/form/host-catalog/azure/index.hbs +++ b/ui/admin/app/components/form/host-catalog/azure/index.hbs @@ -68,7 +68,7 @@ {{/each}} - + {{t 'titles.provider'}} {{t 'titles.choose-a-provider'}} {{concat diff --git a/ui/admin/app/components/form/host-catalog/static/index.hbs b/ui/admin/app/components/form/host-catalog/static/index.hbs index 42ea38589..23bed2624 100644 --- a/ui/admin/app/components/form/host-catalog/static/index.hbs +++ b/ui/admin/app/components/form/host-catalog/static/index.hbs @@ -71,32 +71,6 @@ {{/each}} - - {{#if @model.isPlugin}} - - - {{t 'titles.provider'}} - {{t 'titles.choose-a-provider'}} - {{t 'descriptions.choose-a-provider'}} - - {{#each-in this.mapResourceTypeWithIcon as |pluginType|}} - - {{t - (concat 'resources.host-catalog.types.' pluginType) - }} - {{t - (concat 'resources.host-catalog.help.' pluginType) - }} - - {{/each-in}} - - {{/if}} {{/if}} {{#if (can 'save model' @model)}} diff --git a/ui/admin/app/components/form/target/details/index.hbs b/ui/admin/app/components/form/target/details/index.hbs index 824d9f7de..91e247e64 100644 --- a/ui/admin/app/components/form/target/details/index.hbs +++ b/ui/admin/app/components/form/target/details/index.hbs @@ -123,9 +123,9 @@ as |F| > {{t - 'form.default_port.label' + 'resources.target.form.default_port.label' }} - {{t 'form.default_port.help'}} + {{t 'resources.target.form.default_port.help'}} {{#if @model.errors.default_port}} {{#each @model.errors.default_port as |error|}} @@ -135,6 +135,29 @@ {{/if}} + + {{t 'resources.target.form.default_client_port.label'}} + {{t + 'resources.target.form.default_client_port.help' + }} + {{#if @model.errors.default_client_port}} + + {{#each @model.errors.default_client_port as |error|}} + {{error.message}} + {{/each}} + + {{/if}} + +