feat(catalog) : M7 — permissions catalog.storages.* + sidebar + 3 miroirs RBAC (ERP-210) #162
Reference in New Issue
Block a user
Delete Branch "feat/erp-210-permissions-catalog-storages"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
M7 · ERP-210 (1.1) — Permissions catalog.storages.* + sidebar + 3 miroirs RBAC
Socle RBAC du stockage (M7). Aucun nouveau module : le stockage vit dans Catalog et réutilisera le référentiel
StorageTypedu M6. Câblage calqué exactement sur M6catalog.products.*(même section Administration, admin-only).Modifications
CatalogModule.php:permissions()exposecatalog.storages.view+catalog.storages.manage.config/sidebar.php: item/admin/storages(icônemdi:warehouse, gatecatalog.storages.view, modulecatalog), section Administration, près des items Catalog.config/sidebar.phpfrontend/tests/e2e/_fixtures/personas.ts:storagesajouté au type union, àALL_ADMIN_LINKS, auxexpectedAdminLinksdesuper-admin+user-full, etview/manageaux permissions deuser-full. Personas métier : rien.SeedE2ECommand.php: miroir back du personauser-full.frontend/i18n/locales/fr.json: clésidebar.catalog.storages(« Gestion des stockages »).Vérifications
app:sync-permissions: OK, 2 codes confirmés en base.make php-cs-fixer-allow-risky: 0 fichier à corriger.make test: garde-fous des 3 miroirs verts (seul échec = flaky JWT connu, sans rapport, passe en isolation).make nuxt-test: 725/725.Hors périmètre (ticket 1.1)
Pas d'endpoint
/api/storagesà ce stade — la vérif fonctionnelle « Admin 200 / métiers 403 » viendra avec le ticket API stockage.Revue de code — M7 Stockages
🔴 Lien sidebar
/admin/storagessans page frontend —config/sidebar.phpL'item « Gestion des stockages » est livré actif (et les personas e2e l'attendent), mais aucune page n'existe sous
frontend/modules/catalog/pages/admin/(grep storages frontend/modules= 0 résultat). Tout porteur decatalog.storages.viewclique → 404 / page blanche. Le test e2e ne fait qu'untoBeVisible, jamais de navigation, donc il reste vert et masque le lien mort.→ Soit retirer / feature-flag l'item jusqu'à la livraison de la page, soit confirmer qu'un ticket ultérieur la livre avant la mise en prod.
Note RBAC (faible) :
catalog.storages.view/.managene donne accès ni à/api/storage_types(gardé parcatalog.products.view) ni à/api/sites— masqué tant que seul le persona full-admin porte la capacité, mais le besoin n'est pas auto-suffisant si un rôle restreint reçoit un jour ces seules permissions.