refactor: 💡 Refactor ldap account view and serializer (#1826)

* refactor: 💡 Refactor ldap account view and serializer

Refactor LDAP account view to only show `InfoField` fields if values are
not `undefined`.  Also fixed bug for updating accounts.

✅ Closes: ICU-10514

* refactor: 💡 clean up code

Quick cleanup of code for accounts

* Update account.js

change text for commit

* Update index.hbs

* refactor: 💡 format hbs

format hbs
This commit is contained in:
Devon Anderson authored and GitHub committed 2023-08-04 19:46:44 -04:00
1 parent de77f8807d
commit e089d1c3ff
4 files changed
+50 -23

No files matched your search

@@ -13,13 +13,11 @@ export default class GeneratedAccountModel extends BaseModel {
// =attributes
@attr('string', {
readOnly: true,
description: 'The type of the resource, to help differentiate schemas',
})
type;
@attr('string', {
readOnly: true,
description: 'The owning auth method ID.',
})
auth_method_id;
+8
View File
@@ -52,6 +52,10 @@ export default class AccountSerializer extends ApplicationSerializer {
serialized.attributes = {};
const { login_name } = snapshot.record;
if (login_name) serialized.attributes.login_name = login_name;
} else {
// LDAP does not support updating the readonly auth method ID or type attributes.
delete serialized.auth_method_id;
delete serialized.type;
}
return serialized;
}
@@ -69,6 +73,10 @@ export default class AccountSerializer extends ApplicationSerializer {
const { issuer, subject } = snapshot.record;
if (issuer) serialized.attributes.issuer = issuer;
if (subject) serialized.attributes.subject = subject;
} else {
// OIDC does not support updating the readonly auth method ID or type attributes.
delete serialized.auth_method_id;
delete serialized.type;
}
return serialized;
}
@@ -32,7 +32,9 @@ module('Unit | Serializer | account', function (hooks) {
const snapshot = record._createSnapshot();
const serializedRecord = serializer.serialize(snapshot);
assert.deepEqual(serializedRecord, {
type: TYPE_AUTH_METHOD_OIDC,
name: 'Name',
auth_method_id: '1',
description: 'Description',
version: 1,
attributes: {
@@ -89,7 +91,9 @@ module('Unit | Serializer | account', function (hooks) {
const snapshot = record._createSnapshot();
const serializedRecord = serializer.serialize(snapshot);
assert.deepEqual(serializedRecord, {
type: TYPE_AUTH_METHOD_PASSWORD,
name: 'Name',
auth_method_id: '1',
description: 'Description',
attributes: {
login_name: 'Login Name',
@@ -116,7 +120,9 @@ module('Unit | Serializer | account', function (hooks) {
};
const serializedRecord = serializer.serialize(snapshot);
assert.deepEqual(serializedRecord, {
type: TYPE_AUTH_METHOD_PASSWORD,
name: 'Name',
auth_method_id: '1',
description: 'Description',
attributes: {
login_name: 'Login Name',
@@ -199,7 +205,9 @@ module('Unit | Serializer | account', function (hooks) {
const snapshot = record._createSnapshot();
const serializedRecord = serializer.serialize(snapshot);
assert.deepEqual(serializedRecord, {
type: TYPE_AUTH_METHOD_LDAP,
name: 'Name',
auth_method_id: '1',
description: 'Description',
version: 1,
attributes: {
@@ -86,27 +86,40 @@
'form.other_fields.help'
}}</Hds::Form::HelperText>
</div>
<InfoField @value={{@model.login_name}} as |F|>
<F.Label>{{t 'form.login_name.label'}}</F.Label>
</InfoField>
<InfoField @value={{@model.email}} as |F|>
<F.Label>{{t 'resources.account.form.email.label'}}</F.Label>
</InfoField>
<InfoField @value={{@model.full_name}} as |F|>
<F.Label>{{t 'resources.account.form.full_name.label'}}</F.Label>
</InfoField>
<InfoField @value={{@model.dn}} as |F|>
<F.Label>{{t 'resources.account.form.dn.label'}}</F.Label>
</InfoField>
<p class='hds-font-weight-semibold'>{{t
'resources.account.form.member_of_groups.label'
}}</p>
{{#each @model.member_of_groups as |group|}}
<Hds::Form::TextInput::Field
@value={{group.value}}
disabled={{true}}
/>
{{/each}}
{{#if @model.login_name}}
<InfoField @value={{@model.login_name}} as |F|>
<F.Label>{{t 'form.login_name.label'}}</F.Label>
</InfoField>
{{/if}}
{{#if @model.email}}
<InfoField @value={{@model.email}} as |F|>
<F.Label>{{t 'resources.account.form.email.label'}}</F.Label>
</InfoField>
{{/if}}
{{#if @model.full_name}}
<InfoField @value={{@model.full_name}} as |F|>
<F.Label>{{t 'resources.account.form.full_name.label'}}</F.Label>
</InfoField>
{{/if}}
{{#if @model.dn}}
<InfoField @value={{@model.dn}} as |F|>
<F.Label>{{t 'resources.account.form.dn.label'}}</F.Label>
</InfoField>
{{/if}}
{{#if @model.member_of_groups}}
<p class='hds-font-weight-semibold'>
{{t 'resources.account.form.member_of_groups.label'}}
</p>
{{#each @model.member_of_groups as |group|}}
<Hds::Form::TextInput::Field
@value={{group.value}}
disabled={{true}}
/>
{{/each}}
{{/if}}
</F.Control>
</Hds::Form::Fieldset>
{{/unless}}