UI: a role denied one non-essential bootstrap API (e.g. listLdapConfigurations) fails to load the entire console

Ouverte Adaptée aux débutants
#13,912 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
2/5
Temps estimé
1-3 heures
Accessibilité débutants
85/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
javascript
Domaine
frontend

Piste de recherche

Commencez dans ui/src/store/modules/user.js, au niveau de GetInfo, en particulier listLdapConfigurations et les gestionnaires tolérants listNetworkServiceProviders/listGuiThemes. Consultez ui/src/permission.js pour comprendre le chemin d’échec du garde de route. Le travail est terminé lorsqu’une lecture de bootstrap non essentielle refusée définit son indicateur sur sa valeur par défaut sans rejeter GetInfo, afin que la console se charge au lieu de rediriger vers /user/login.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

component:UI
problem

The web console fails to load entirely for any role denied one non-essential bootstrap read. GetInfo runs several independent calls under a single shared Promise and wires several to the same reject, including listLdapConfigurations, which only sets a flag. When a role denies it the 432 rejects the shared promise before listApis can resolve it (a race the small query usually wins), so GetInfo rejects and the router guard logs the user out instead of building routes. The tolerant pattern sits right beside it: listNetworkServiceProviders swallows its own error and the console still loads (listGuiThemes likewise).

Expected: a denied non-essential read degrades like listNetworkServiceProviders/listGuiThemes. Actual: blank console, redirect to /user/login.

versions

4.22 and current main. Client-side UI only; hypervisor/storage/network irrelevant.

The steps to reproduce the bug
  1. Create a custom role (e.g. from the DomainAdmin base type) that denies listLdapConfigurations.
  2. Assign an account to it.
  3. Log in to the web UI — the console never renders and you are redirected to login.
What to do about it?

Give listLdapConfigurations (and any non-essential bootstrap read) its own .catch that defaults the flag, as listNetworkServiceProviders already does. The underlying hazard is the shared resolve/reject across independent calls in GetInfo; reserve reject for genuinely essential calls such as listApis.

Langage dominant
Java
Étoiles
3.1k
Forks
1.4k
Merge moyen
7 j 5 h
PR mergées (30 j)
28

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/cloudstack

Toutes les issues de apache/cloudstack

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.