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) {