fix(review) : resout findings 3e passe review (HIGH frontend + MEDIUMs backend/frontend/E2E)
Backend :
- AuditLogWriter::stripSensitive rendu reellement recursif (matche doc).
- Tests GET /api/permissions/{id} non-admin pour chaque branche OR (gap Codex).
- Gardes non-regression UserRbacProcessor : PATCH /rbac sans clef sites ne
doit ni auto-selectionner currentSite ni exiger sites.manage.
Frontend :
- useAuditLog : renomme export trompeur fetchLogs -> fetchLogsCached, le
nom reflete desormais le comportement (cache pollue sinon).
- RoleDrawer / UserRbacDrawer : catch explicite + message d'erreur +
bouton save disabled si le chargement des referentiels a echoue (evite
un ecrasement silencieux des droits).
- AuditTimeline / AuditLogDetail : `oui`/`non` passent par common.yes/no.
- AuditTimeline : Intl.RelativeTimeFormat et toLocaleString suivent la
locale i18n courante (plus de hardcode 'fr').
E2E :
- sidebar-visibility.spec : remplace waitForLoadState('networkidle')
fragile par attente semantique sur accountDashboardLink (stable en CI).
Tests : 237/237 green, eslint clean, php-cs-fixer clean.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -128,9 +128,14 @@ export function useAuditLog() {
|
||||
})
|
||||
}
|
||||
|
||||
// API publique : on expose volontairement deux noms distincts pour les
|
||||
// deux contrats (cache/no-cache). Aliaser `fetchLogs` vers la version
|
||||
// cachee trompait les appelants : un consommateur qui destructurait
|
||||
// `{ fetchLogs }` en pensant faire un appel neutre polluait en realite
|
||||
// `lastCollection`, effet indetectable sans lire l'impl.
|
||||
return {
|
||||
lastCollection,
|
||||
fetchLogs: fetchLogsCached,
|
||||
fetchLogsCached,
|
||||
fetchLogById,
|
||||
fetchEntityLogs,
|
||||
fetchEntityTypes,
|
||||
|
||||
Reference in New Issue
Block a user