From 79740f55b8d8653d6b8ede8c1fbefddfb9ae65d9 Mon Sep 17 00:00:00 2001 From: stag7824 Date: Fri, 11 Sep 2026 13:59:12 +0200 Subject: [PATCH] ui: keep the console loading when a role denies listLdapConfigurations GetInfo runs a dozen independent bootstrap calls inside a single Promise and wires several of them to the same reject. listLdapConfigurations is one of those, and all it does with the answer is record whether LDAP is configured. When a role denies that API the 432 rejects the shared promise, and it wins the race against listApis resolving it because it is a far smaller query. GetInfo then rejects, and the router guard in permission.js treats that as a failed session and logs the user out, so the console never renders at all. Default the flag and let the console finish loading instead, matching listNetworkServiceProviders and cloudianIsEnabled either side of it, which already swallow their own errors. Fixes #13912 --- ui/src/store/modules/user.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ui/src/store/modules/user.js b/ui/src/store/modules/user.js index 5c78b8a592fa..ac227c6c2b66 100644 --- a/ui/src/store/modules/user.js +++ b/ui/src/store/modules/user.js @@ -445,8 +445,10 @@ const user = { getAPI('listLdapConfigurations').then(response => { const ldapEnable = (response.ldapconfigurationresponse.count > 0) commit('SET_LDAP', ldapEnable) - }).catch(error => { - reject(error) + }).catch(ignored => { + // A role is allowed to deny this read. It only records whether LDAP is configured, so + // treat it as not configured rather than rejecting the promise the whole console waits on. + commit('SET_LDAP', false) }) getAPI('cloudianIsEnabled').then(response => {