From ab830995b2924aaa21eb1f85afef2e8b6fe01592 Mon Sep 17 00:00:00 2001 From: claire bontempo <68122737+hellobontempo@users.noreply.github.com> Date: Tue, 1 Jul 2025 09:30:04 -0700 Subject: [PATCH] UI: Fix login settings list view if names include an underscore (#31150) * revert api service use in login settings list view * add changelog * update list view * update error text assertion * restart tests --- changelog/31150.txt | 3 +++ ui/app/app.js | 1 + .../addon/components/login-settings/page/list.hbs | 4 ++-- ui/lib/config-ui/addon/engine.js | 1 + .../config-ui/addon/routes/login-settings/index.js | 13 ++++++++----- .../acceptance/config-ui/login-settings-test.js | 6 +++++- 6 files changed, 20 insertions(+), 8 deletions(-) create mode 100644 changelog/31150.txt diff --git a/changelog/31150.txt b/changelog/31150.txt new file mode 100644 index 0000000000..fcdd2fbe68 --- /dev/null +++ b/changelog/31150.txt @@ -0,0 +1,3 @@ +```release-note:bug +ui: Fixes UI login settings list page which was not rendering rules with an underscore in the name. +``` \ No newline at end of file diff --git a/ui/app/app.js b/ui/app/app.js index 863b96d6b6..a8f2064b6c 100644 --- a/ui/app/app.js +++ b/ui/app/app.js @@ -24,6 +24,7 @@ export default class App extends Application { 'version', 'custom-messages', 'api', + 'store', 'capabilities', ], }, diff --git a/ui/lib/config-ui/addon/components/login-settings/page/list.hbs b/ui/lib/config-ui/addon/components/login-settings/page/list.hbs index 0e0e7a11bf..79a447a10a 100644 --- a/ui/lib/config-ui/addon/components/login-settings/page/list.hbs +++ b/ui/lib/config-ui/addon/components/login-settings/page/list.hbs @@ -29,9 +29,9 @@ {{rule.name}}
- {{rule.namespacePath}} + {{rule.namespace_path}}
diff --git a/ui/lib/config-ui/addon/engine.js b/ui/lib/config-ui/addon/engine.js index 6f2a9e9de9..ddb7d4912c 100644 --- a/ui/lib/config-ui/addon/engine.js +++ b/ui/lib/config-ui/addon/engine.js @@ -25,6 +25,7 @@ export default class ConfigUiEngine extends Engine { 'version', 'custom-messages', 'api', + 'store', 'capabilities', ], }; diff --git a/ui/lib/config-ui/addon/routes/login-settings/index.js b/ui/lib/config-ui/addon/routes/login-settings/index.js index 1c7d41e926..1c9f065804 100644 --- a/ui/lib/config-ui/addon/routes/login-settings/index.js +++ b/ui/lib/config-ui/addon/routes/login-settings/index.js @@ -8,20 +8,23 @@ import { service } from '@ember/service'; export default class LoginSettingsRoute extends Route { @service api; + @service store; async model() { + const adapter = this.store.adapterFor('application'); try { - const res = await this.api.sys.uiLoginDefaultAuthList(true); - const loginRules = this.api.keyInfoToArray({ keyInfo: res.keyInfo, keys: res.keys }); + const { data } = await adapter.ajax('/v1/sys/config/ui/login/default-auth', 'GET', { + data: { list: true }, + }); + const loginRules = this.api.keyInfoToArray({ keyInfo: data.key_info, keys: data.keys }); return { loginRules }; } catch (e) { - const error = await this.api.parseError(e); - if (error.status === 404) { + if (e.httpStatus === 404) { // If no login settings exist, return an empty array to render the empty state return { loginRules: [] }; } // Otherwise fallback to the standard error template - throw error; + throw e; } } } diff --git a/ui/tests/acceptance/config-ui/login-settings-test.js b/ui/tests/acceptance/config-ui/login-settings-test.js index 87a55cb80e..5d4c174faa 100644 --- a/ui/tests/acceptance/config-ui/login-settings-test.js +++ b/ui/tests/acceptance/config-ui/login-settings-test.js @@ -47,7 +47,11 @@ module('Acceptance | Enterprise | config-ui/login-settings', function (hooks) { test('it falls back error template if no permission', async function (assert) { this.server.get('/sys/config/ui/login/default-auth', () => overrideResponse(403)); await visit('vault/config-ui/login-settings'); - assert.dom(GENERAL.pageError.error).hasText('Error permission denied'); + assert + .dom(GENERAL.pageError.error) + .hasText( + 'Not authorized You are not authorized to access content at /v1/sys/config/ui/login/default-auth.' + ); }); module('list, read and delete', function (hooks) {