Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 864bc7e8e8 |
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
|||||||
use App\Module\Catalog\CatalogModule;
|
use App\Module\Catalog\CatalogModule;
|
||||||
use App\Module\Commercial\CommercialModule;
|
use App\Module\Commercial\CommercialModule;
|
||||||
use App\Module\Core\CoreModule;
|
use App\Module\Core\CoreModule;
|
||||||
|
use App\Module\Logistique\LogistiqueModule;
|
||||||
use App\Module\Sites\SitesModule;
|
use App\Module\Sites\SitesModule;
|
||||||
use App\Module\Technique\TechniqueModule;
|
use App\Module\Technique\TechniqueModule;
|
||||||
use App\Module\Transport\TransportModule;
|
use App\Module\Transport\TransportModule;
|
||||||
@@ -15,4 +16,5 @@ return [
|
|||||||
CatalogModule::class,
|
CatalogModule::class,
|
||||||
TechniqueModule::class,
|
TechniqueModule::class,
|
||||||
TransportModule::class,
|
TransportModule::class,
|
||||||
|
LogistiqueModule::class,
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -95,6 +95,24 @@ return [
|
|||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
// Section "Logistique" (M5, ERP-181) : nouveau pole "operations physiques sur
|
||||||
|
// site", distinct du repertoire Transport (M4). Porte le ticket de pesee au
|
||||||
|
// pont bascule. L'item est gate par `logistique.weighing_tickets.view` ; la
|
||||||
|
// section disparait automatiquement (SidebarProvider) si le module `logistique`
|
||||||
|
// est desactive ou si l'user n'a pas la permission (Compta / Commerciale).
|
||||||
|
[
|
||||||
|
'label' => 'sidebar.logistique.section',
|
||||||
|
'icon' => 'mdi:scale',
|
||||||
|
'items' => [
|
||||||
|
[
|
||||||
|
'label' => 'sidebar.logistique.weighing_tickets',
|
||||||
|
'to' => '/weighing-tickets',
|
||||||
|
'icon' => 'mdi:scale',
|
||||||
|
'module' => 'logistique',
|
||||||
|
'permission' => 'logistique.weighing_tickets.view',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
// Section "Administration" : regroupe toutes les pages de configuration
|
// Section "Administration" : regroupe toutes les pages de configuration
|
||||||
// applicative (RBAC, users, sites, audit log).
|
// applicative (RBAC, users, sites, audit log).
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -39,6 +39,10 @@
|
|||||||
"section": "Transport",
|
"section": "Transport",
|
||||||
"carriers": "Répertoire transporteurs"
|
"carriers": "Répertoire transporteurs"
|
||||||
},
|
},
|
||||||
|
"logistique": {
|
||||||
|
"section": "Logistique",
|
||||||
|
"weighing_tickets": "Tickets de pesée"
|
||||||
|
},
|
||||||
"core": {
|
"core": {
|
||||||
"roles": "Gestion des rôles",
|
"roles": "Gestion des rôles",
|
||||||
"users": "Utilisateurs",
|
"users": "Utilisateurs",
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
export default defineNuxtConfig({})
|
||||||
@@ -102,6 +102,12 @@ export const personas: Record<PersonaKey, Persona> = {
|
|||||||
'transport.carriers.view',
|
'transport.carriers.view',
|
||||||
'transport.carriers.manage',
|
'transport.carriers.manage',
|
||||||
'transport.carriers.archive',
|
'transport.carriers.archive',
|
||||||
|
// Logistique — Tickets de pesee (M5, ERP-181). Meme logique : mappe sur
|
||||||
|
// le persona "tout", pas de nouveau persona (regle ABSOLUE n°7).
|
||||||
|
// logistique.weighing_tickets.view n'ajoute pas de lien dans la section
|
||||||
|
// Administration, donc expectedAdminLinks reste inchange.
|
||||||
|
'logistique.weighing_tickets.view',
|
||||||
|
'logistique.weighing_tickets.manage',
|
||||||
],
|
],
|
||||||
expectedAdminLinks: ['users', 'roles', 'sites', 'categories', 'audit-log'],
|
expectedAdminLinks: ['users', 'roles', 'sites', 'categories', 'audit-log'],
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -80,6 +80,9 @@ final class RbacSeeder
|
|||||||
// Transporteurs (M4 § 5.2, ERP-153) : view + manage (PAS archive -> admin seul).
|
// Transporteurs (M4 § 5.2, ERP-153) : view + manage (PAS archive -> admin seul).
|
||||||
'transport.carriers.view',
|
'transport.carriers.view',
|
||||||
'transport.carriers.manage',
|
'transport.carriers.manage',
|
||||||
|
// Tickets de pesee (M5 § 5.2, ERP-181) : view + manage (« Tout »).
|
||||||
|
'logistique.weighing_tickets.view',
|
||||||
|
'logistique.weighing_tickets.manage',
|
||||||
// Visibilite multi-site des prestataires (M3 § 2.13) : voit tous les sites.
|
// Visibilite multi-site des prestataires (M3 § 2.13) : voit tous les sites.
|
||||||
'sites.bypass_scope',
|
'sites.bypass_scope',
|
||||||
// Lecture des referentiels transverses pour les selects client (ERP-102).
|
// Lecture des referentiels transverses pour les selects client (ERP-102).
|
||||||
@@ -137,9 +140,14 @@ final class RbacSeeder
|
|||||||
'label' => 'Usine',
|
'label' => 'Usine',
|
||||||
// Prestataires (M3 § 2.9 + § 2.13, ERP-138) : view en lecture seule,
|
// Prestataires (M3 § 2.9 + § 2.13, ERP-138) : view en lecture seule,
|
||||||
// SANS `sites.bypass_scope` -> cloisonne aux prestataires de son site
|
// SANS `sites.bypass_scope` -> cloisonne aux prestataires de son site
|
||||||
// courant. Aucun autre acces metier.
|
// courant.
|
||||||
'permissions' => [
|
'permissions' => [
|
||||||
'technique.providers.view',
|
'technique.providers.view',
|
||||||
|
// Tickets de pesee (M5 § 5.2, ERP-181) : view + manage. L'Usine
|
||||||
|
// pese sur site -> reste cloisonnee a son site courant (pas de
|
||||||
|
// bypass_scope ; les tickets sont filtres par SiteScopedQueryExtension).
|
||||||
|
'logistique.weighing_tickets.view',
|
||||||
|
'logistique.weighing_tickets.manage',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -217,6 +217,10 @@ final class SeedE2ECommand extends Command
|
|||||||
'transport.carriers.view',
|
'transport.carriers.view',
|
||||||
'transport.carriers.manage',
|
'transport.carriers.manage',
|
||||||
'transport.carriers.archive',
|
'transport.carriers.archive',
|
||||||
|
// Logistique — Tickets de pesee (M5, ERP-181). Meme logique :
|
||||||
|
// mappe sur le persona "tout". Miroir de personas.ts.
|
||||||
|
'logistique.weighing_tickets.view',
|
||||||
|
'logistique.weighing_tickets.manage',
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace App\Module\Logistique;
|
||||||
|
|
||||||
|
final class LogistiqueModule
|
||||||
|
{
|
||||||
|
public const string ID = 'logistique';
|
||||||
|
public const string LABEL = 'Logistique';
|
||||||
|
public const bool REQUIRED = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liste declarative des permissions RBAC exposees par le module Logistique.
|
||||||
|
*
|
||||||
|
* Socle des tickets de pesee (M5 § 5.1, ERP-181) :
|
||||||
|
* - `view` : consultation de la liste / fiche d'un ticket de pesee ;
|
||||||
|
* - `manage` : creation / modification d'un ticket de pesee.
|
||||||
|
*
|
||||||
|
* Consommee par `app:sync-permissions`. Matrice role -> permissions dans
|
||||||
|
* `RbacSeeder::MATRIX` (§ 5.2 : Bureau / Usine = view + manage ; Compta /
|
||||||
|
* Commerciale = aucun acces).
|
||||||
|
*
|
||||||
|
* @return array<int, array{code: string, label: string}>
|
||||||
|
*/
|
||||||
|
public static function permissions(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['code' => 'logistique.weighing_tickets.view', 'label' => 'Voir les tickets de pesée'],
|
||||||
|
['code' => 'logistique.weighing_tickets.manage', 'label' => 'Créer / modifier les tickets de pesée'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user