fix(review) : applique fixes blockers review PR #9 (permission guard, sites LAZY, audit UI stale)
- Permission entity : remplace le guard `ROLE_USER` par `core.permissions.view` sur GetCollection/Get. Le catalogue complet des permissions RBAC etait accessible a tout utilisateur authentifie. Ajoute la permission manquante dans CoreModule::permissions() et inverse les tests standardUser* (attendent maintenant un 403 pour un user sans la permission). - UserRbacProcessor::restoreAbsentCollections() : force PersistentCollection::initialize() avant de lire le snapshot. Pour une association fetch=LAZY (ex: User::$sites), le snapshot est vide tant que la collection n'est pas materialisee, ce qui faisait vider silencieusement tous les sites d'un user sur un PATCH ne contenant pas la cle `sites`. - admin/audit-log.vue : ajoute un catch sur loadEntries() qui reset entries/totalItems pour ne pas afficher de donnees stale si le fetch echoue (reseau coupe, 403 inopinee...). Le toast d'erreur reste gere par useApi. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -286,6 +286,14 @@ async function loadEntries(): Promise<void> {
|
||||
if (token !== requestToken) return
|
||||
entries.value = data.member ?? []
|
||||
totalItems.value = data.totalItems ?? 0
|
||||
} catch {
|
||||
// En cas d'echec (reseau, 403, 500...), on reset l'etat pour ne pas
|
||||
// laisser l'utilisateur croire que les donnees affichees sont a jour.
|
||||
// Le toast d'erreur est deja emis par `useApi()` via useAuditLog.
|
||||
if (token === requestToken) {
|
||||
entries.value = []
|
||||
totalItems.value = 0
|
||||
}
|
||||
} finally {
|
||||
if (token === requestToken) {
|
||||
loading.value = false
|
||||
|
||||
Reference in New Issue
Block a user