Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bc4e47d5ad | |||
| ae70e90db2 | |||
| e0575de646 | |||
| 44d8c77718 | |||
| 670c58e02e |
@@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
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\Sites\SitesModule;
|
use App\Module\Sites\SitesModule;
|
||||||
@@ -10,5 +9,4 @@ return [
|
|||||||
CoreModule::class,
|
CoreModule::class,
|
||||||
CommercialModule::class,
|
CommercialModule::class,
|
||||||
SitesModule::class,
|
SitesModule::class,
|
||||||
CatalogModule::class,
|
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -83,13 +83,6 @@ return [
|
|||||||
'module' => 'sites',
|
'module' => 'sites',
|
||||||
'permission' => 'sites.view',
|
'permission' => 'sites.view',
|
||||||
],
|
],
|
||||||
[
|
|
||||||
'label' => 'sidebar.catalog.categories',
|
|
||||||
'to' => '/admin/categories',
|
|
||||||
'icon' => 'mdi:tag-multiple-outline',
|
|
||||||
'module' => 'catalog',
|
|
||||||
'permission' => 'catalog.categories.view',
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
'label' => 'sidebar.core.audit_log',
|
'label' => 'sidebar.core.audit_log',
|
||||||
'to' => '/admin/audit-log',
|
'to' => '/admin/audit-log',
|
||||||
|
|||||||
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
parameters:
|
parameters:
|
||||||
app.version: '0.1.47'
|
app.version: '0.1.42'
|
||||||
|
|||||||
@@ -32,9 +32,6 @@
|
|||||||
},
|
},
|
||||||
"sites": {
|
"sites": {
|
||||||
"admin": "Sites"
|
"admin": "Sites"
|
||||||
},
|
|
||||||
"catalog": {
|
|
||||||
"categories": "Gestion des catégories"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dashboard": {
|
"dashboard": {
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ export interface Persona {
|
|||||||
// sidebar-visibility pour driver la matrice. Les valeurs correspondent
|
// sidebar-visibility pour driver la matrice. Les valeurs correspondent
|
||||||
// aux slugs de route (`/admin/<slug>`), volontairement stables quand
|
// aux slugs de route (`/admin/<slug>`), volontairement stables quand
|
||||||
// la copie/i18n change.
|
// la copie/i18n change.
|
||||||
expectedAdminLinks: Array<'users' | 'roles' | 'sites' | 'audit-log' | 'categories'>
|
expectedAdminLinks: Array<'users' | 'roles' | 'sites' | 'audit-log'>
|
||||||
}
|
}
|
||||||
|
|
||||||
const SHARED_PASSWORD = 'e2e-secret'
|
const SHARED_PASSWORD = 'e2e-secret'
|
||||||
@@ -47,7 +47,7 @@ export const personas: Record<PersonaKey, Persona> = {
|
|||||||
password: SHARED_PASSWORD,
|
password: SHARED_PASSWORD,
|
||||||
isAdmin: true,
|
isAdmin: true,
|
||||||
permissions: [],
|
permissions: [],
|
||||||
expectedAdminLinks: ['users', 'roles', 'sites', 'categories', 'audit-log'],
|
expectedAdminLinks: ['users', 'roles', 'sites', 'audit-log'],
|
||||||
},
|
},
|
||||||
'user-full': {
|
'user-full': {
|
||||||
key: 'user-full',
|
key: 'user-full',
|
||||||
@@ -63,10 +63,8 @@ export const personas: Record<PersonaKey, Persona> = {
|
|||||||
'sites.view',
|
'sites.view',
|
||||||
'sites.manage',
|
'sites.manage',
|
||||||
'sites.bypass_scope',
|
'sites.bypass_scope',
|
||||||
'catalog.categories.view',
|
|
||||||
'catalog.categories.manage',
|
|
||||||
],
|
],
|
||||||
expectedAdminLinks: ['users', 'roles', 'sites', 'categories', 'audit-log'],
|
expectedAdminLinks: ['users', 'roles', 'sites', 'audit-log'],
|
||||||
},
|
},
|
||||||
'user-readonly': {
|
'user-readonly': {
|
||||||
key: 'user-readonly',
|
key: 'user-readonly',
|
||||||
@@ -111,4 +109,4 @@ export function getPersona(key: PersonaKey): Persona {
|
|||||||
return personas[key]
|
return personas[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
export const ALL_ADMIN_LINKS = ['users', 'roles', 'sites', 'categories', 'audit-log'] as const
|
export const ALL_ADMIN_LINKS = ['users', 'roles', 'sites', 'audit-log'] as const
|
||||||
|
|||||||
@@ -1,43 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace App\Module\Catalog;
|
|
||||||
|
|
||||||
final class CatalogModule
|
|
||||||
{
|
|
||||||
public const string ID = 'catalog';
|
|
||||||
public const string LABEL = 'Catalogue';
|
|
||||||
// REQUIRED = true : Category sera FK NOT NULL cote futurs modules Tiers
|
|
||||||
// (M-Clients, M-Fournisseurs, M-Prestataires). Desactiver Catalog casserait
|
|
||||||
// tout le metier au boot Doctrine. Cf. review Tristan MR #12 + spec M0 § 2.1.
|
|
||||||
public const bool REQUIRED = true;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Liste declarative des permissions RBAC exposees par le module Catalog.
|
|
||||||
*
|
|
||||||
* Consommee par la commande `app:sync-permissions` (SyncPermissionsCommand)
|
|
||||||
* qui se charge d'upserter ces entrees dans la table `permission`, de
|
|
||||||
* reactiver les codes precedemment marques orphelins et de marquer comme
|
|
||||||
* orphelins ceux qui ont disparu du code source.
|
|
||||||
*
|
|
||||||
* La cle `module` est auto-injectee par le sync command a partir de
|
|
||||||
* `self::ID`, il est donc inutile de la repeter dans chaque entree.
|
|
||||||
*
|
|
||||||
* Convention de nommage des codes : `module.resource[.sub].action` en
|
|
||||||
* snake_case, le prefixe module devant correspondre exactement a
|
|
||||||
* `self::ID` (verifie par la commande de synchronisation).
|
|
||||||
*
|
|
||||||
* Granularite alignee sur Core (view + manage), pas view/create/edit/delete
|
|
||||||
* (cf. spec M0 § 2.7).
|
|
||||||
*
|
|
||||||
* @return array<int, array{code: string, label: string}>
|
|
||||||
*/
|
|
||||||
public static function permissions(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
['code' => 'catalog.categories.view', 'label' => 'Voir les categories'],
|
|
||||||
['code' => 'catalog.categories.manage', 'label' => 'Gerer les categories (creer, editer, supprimer)'],
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -184,8 +184,6 @@ final class SeedE2ECommand extends Command
|
|||||||
'sites.view',
|
'sites.view',
|
||||||
'sites.manage',
|
'sites.manage',
|
||||||
'sites.bypass_scope',
|
'sites.bypass_scope',
|
||||||
'catalog.categories.view',
|
|
||||||
'catalog.categories.manage',
|
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
|
|||||||
Reference in New Issue
Block a user