From 905ee8785898eef16075fa0232b1b9e59b52174c Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Thu, 17 Sep 2020 14:39:15 -0400 Subject: [PATCH 1/4] feat: Display password account's loginname in list --- addons/api/addon/models/account.js | 19 ++++++++++++++++++- addons/api/addon/serializers/account.js | 7 +++++-- addons/api/tests/unit/models/account-test.js | 12 ++++++++++++ .../auth-method/accounts/index.hbs | 4 ++++ 4 files changed, 39 insertions(+), 3 deletions(-) diff --git a/addons/api/addon/models/account.js b/addons/api/addon/models/account.js index b28558732..4a6ee08c2 100644 --- a/addons/api/addon/models/account.js +++ b/addons/api/addon/models/account.js @@ -1,13 +1,26 @@ import GeneratedAccountModel from '../generated/models/account'; import { fragment } from 'ember-data-model-fragments/attributes'; +import { computed } from '@ember/object'; export default class AccountModel extends GeneratedAccountModel { + + // =attributes + /** * Attributes of this resource, if any, represented as a JSON fragment. * @type {FragmentAccountAttributesModel} */ @fragment('fragment-account-attributes', { defaultValue: {} }) attributes; + /** + * Convenience for getting login_name attribute. + * @type {string} + */ + @computed('attributes.login_name') + get username() { + return this.attributes.login_name; + } + // =methods /** @@ -41,7 +54,11 @@ export default class AccountModel extends GeneratedAccountModel { * @param {object} options.adapterOptions * @return {Promise} */ - changePassword(currentPassword, newPassword, options = { adapterOptions: {} }) { + changePassword( + currentPassword, + newPassword, + options = { adapterOptions: {} } + ) { const defaultAdapterOptions = { method: 'change-password', currentPassword, diff --git a/addons/api/addon/serializers/account.js b/addons/api/addon/serializers/account.js index 416bc488e..01618a081 100644 --- a/addons/api/addon/serializers/account.js +++ b/addons/api/addon/serializers/account.js @@ -22,8 +22,11 @@ export default class AccountSerializer extends ApplicationSerializer { } if (snapshot?.adapterOptions?.method === 'change-password') { const { currentPassword, newPassword } = snapshot?.adapterOptions; - serialized = - this.serializeForChangePassword(snapshot, currentPassword, newPassword); + serialized = this.serializeForChangePassword( + snapshot, + currentPassword, + newPassword + ); } return serialized; } diff --git a/addons/api/tests/unit/models/account-test.js b/addons/api/tests/unit/models/account-test.js index 554a72be5..b8ce36b45 100644 --- a/addons/api/tests/unit/models/account-test.js +++ b/addons/api/tests/unit/models/account-test.js @@ -9,4 +9,16 @@ module('Unit | Model | account', function (hooks) { let model = store.createRecord('account', {}); assert.ok(model); }); + + test('it has an username attribute', function (assert) { + assert.expect(2); + const store = this.owner.lookup('service:store'); + let model = store.createRecord('account', { + name: 'name', + type: 'password', + }); + assert.equal(model.username, null); + model.attributes.login_name = 'username'; + assert.equal(model.username, 'username'); + }); }); diff --git a/ui/core/app/templates/scopes/scope/auth-methods/auth-method/accounts/index.hbs b/ui/core/app/templates/scopes/scope/auth-methods/auth-method/accounts/index.hbs index 8586ac7c0..83ed4fa1a 100644 --- a/ui/core/app/templates/scopes/scope/auth-methods/auth-method/accounts/index.hbs +++ b/ui/core/app/templates/scopes/scope/auth-methods/auth-method/accounts/index.hbs @@ -4,6 +4,7 @@ {{t 'form.label.name'}} + {{t 'form.label.identification'}} {{t 'form.label.id'}} @@ -19,6 +20,9 @@

{{account.description}}

+ + {{account.username}} + {{account.id}} From 3ae2db95625d86f5926fc833f0240ff6559e528e Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Fri, 18 Sep 2020 14:15:19 -0400 Subject: [PATCH 2/4] fix: Add type check for account username --- addons/api/addon/models/account.js | 8 +++++--- addons/api/tests/unit/models/account-test.js | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/addons/api/addon/models/account.js b/addons/api/addon/models/account.js index 4a6ee08c2..4f880e07d 100644 --- a/addons/api/addon/models/account.js +++ b/addons/api/addon/models/account.js @@ -13,12 +13,14 @@ export default class AccountModel extends GeneratedAccountModel { @fragment('fragment-account-attributes', { defaultValue: {} }) attributes; /** - * Convenience for getting login_name attribute. + * Convenience for getting username in account. * @type {string} */ - @computed('attributes.login_name') + @computed('attributes') get username() { - return this.attributes.login_name; + if(this.type === 'password') { + return this.attributes.login_name; + } } // =methods diff --git a/addons/api/tests/unit/models/account-test.js b/addons/api/tests/unit/models/account-test.js index b8ce36b45..f6cbfbcc5 100644 --- a/addons/api/tests/unit/models/account-test.js +++ b/addons/api/tests/unit/models/account-test.js @@ -10,7 +10,7 @@ module('Unit | Model | account', function (hooks) { assert.ok(model); }); - test('it has an username attribute', function (assert) { + test('it has an username attribute for password account', function (assert) { assert.expect(2); const store = this.owner.lookup('service:store'); let model = store.createRecord('account', { @@ -21,4 +21,5 @@ module('Unit | Model | account', function (hooks) { model.attributes.login_name = 'username'; assert.equal(model.username, 'username'); }); + }); From 1c16f8fe19e36a55f421d6e9f6f7d847fb5469dc Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Fri, 18 Sep 2020 14:33:10 -0400 Subject: [PATCH 3/4] fix: Lint errors for account username return type --- addons/api/addon/models/account.js | 10 +++++++--- addons/api/tests/unit/models/account-test.js | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/addons/api/addon/models/account.js b/addons/api/addon/models/account.js index 4f880e07d..de5209c34 100644 --- a/addons/api/addon/models/account.js +++ b/addons/api/addon/models/account.js @@ -16,11 +16,15 @@ export default class AccountModel extends GeneratedAccountModel { * Convenience for getting username in account. * @type {string} */ - @computed('attributes') + @computed('attributes.{login_name}') get username() { - if(this.type === 'password') { - return this.attributes.login_name; + let username = ''; + switch (this.type) { + case 'password': + username = this.attributes.login_name; + break; } + return username; } // =methods diff --git a/addons/api/tests/unit/models/account-test.js b/addons/api/tests/unit/models/account-test.js index f6cbfbcc5..f937b3c26 100644 --- a/addons/api/tests/unit/models/account-test.js +++ b/addons/api/tests/unit/models/account-test.js @@ -17,7 +17,7 @@ module('Unit | Model | account', function (hooks) { name: 'name', type: 'password', }); - assert.equal(model.username, null); + assert.notOk(model.username); model.attributes.login_name = 'username'; assert.equal(model.username, 'username'); }); From 1f52f02727e58aa246ce92044d450c6f9cd483c6 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Mon, 21 Sep 2020 10:45:45 -0400 Subject: [PATCH 4/4] fix: Add type computed property check to account username --- addons/api/addon/models/account.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/api/addon/models/account.js b/addons/api/addon/models/account.js index de5209c34..71b337f44 100644 --- a/addons/api/addon/models/account.js +++ b/addons/api/addon/models/account.js @@ -16,7 +16,7 @@ export default class AccountModel extends GeneratedAccountModel { * Convenience for getting username in account. * @type {string} */ - @computed('attributes.{login_name}') + @computed('type', 'attributes.{login_name}') get username() { let username = ''; switch (this.type) {