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