Compare commits
2 Commits
701a480442
...
68f072ef46
| Author | SHA1 | Date | |
|---|---|---|---|
| 68f072ef46 | |||
| e2fbf51e19 |
@@ -8,6 +8,16 @@ doctrine:
|
|||||||
default:
|
default:
|
||||||
url: '%env(resolve:DATABASE_URL)%'
|
url: '%env(resolve:DATABASE_URL)%'
|
||||||
profiling_collect_backtrace: '%kernel.debug%'
|
profiling_collect_backtrace: '%kernel.debug%'
|
||||||
|
# Exclut `audit_log` de toute operation de comparaison de schema
|
||||||
|
# (doctrine:schema:update, schema:validate, diff de migrations...).
|
||||||
|
# Cette table n'a volontairement aucune entite mappee : elle est
|
||||||
|
# append-only via DBAL brut (AuditLogWriter) pour eviter la
|
||||||
|
# recursion du listener Doctrine. Sans ce filtre, schema:update
|
||||||
|
# la considere comme "orpheline" et genere un `DROP TABLE
|
||||||
|
# audit_log` qui casse la base de test apres chaque
|
||||||
|
# `make test-db-setup`. La creation / suppression de la table
|
||||||
|
# reste pilotee par les migrations (cf. Version20260420202749).
|
||||||
|
schema_filter: '~^(?!audit_log$).+~'
|
||||||
audit:
|
audit:
|
||||||
url: '%env(resolve:DATABASE_URL)%'
|
url: '%env(resolve:DATABASE_URL)%'
|
||||||
orm:
|
orm:
|
||||||
|
|||||||
@@ -39,20 +39,29 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
return [
|
return [
|
||||||
// Section "Administration" : regroupe toutes les pages de configuration
|
// Section "Administration" : regroupe toutes les pages de configuration
|
||||||
// applicative (RBAC, users, sites, audit log). Gate implicite : si l'user
|
// applicative (RBAC, users, sites, audit log).
|
||||||
// n'a aucune des permissions item, la section se vide et disparait.
|
//
|
||||||
// Pour imposer un gate explicite (ex: "seuls les membres du groupe support
|
// CONVENTION : "etre admin" = detenir au moins une permission admin-scoped.
|
||||||
// voient l'administration"), ajouter ici : 'permission' => 'core.admin.access'.
|
// En pratique, le groupe `core.*` represente l'administration applicative
|
||||||
|
// (users, roles, audit_log) ; les autres permissions admin-scoped proviennent
|
||||||
|
// des modules qui exposent leur propre page d'admin dans cette section
|
||||||
|
// (ex: `sites.view`). Un user qui n'a AUCUNE de ces permissions n'a pas
|
||||||
|
// acces a l'administration.
|
||||||
|
//
|
||||||
|
// Gate implicite : tous les items de cette section declarent une `permission`.
|
||||||
|
// Sans aucune permission correspondante, tous les items sont filtres, la
|
||||||
|
// section devient vide et est automatiquement masquee par SidebarProvider
|
||||||
|
// (cf. la boucle de filtrage : section vide => `continue`). Inutile donc
|
||||||
|
// d'ajouter un gate explicite au niveau section tant que chaque item porte
|
||||||
|
// sa propre permission.
|
||||||
|
//
|
||||||
|
// Pour imposer un gate explicite supplementaire (ex: "seuls les membres du
|
||||||
|
// groupe support voient l'administration, meme s'ils ont des permissions
|
||||||
|
// individuelles"), ajouter : 'permission' => 'core.admin.access'.
|
||||||
[
|
[
|
||||||
'label' => 'sidebar.administration.section',
|
'label' => 'sidebar.administration.section',
|
||||||
'icon' => 'mdi:cog-outline',
|
'icon' => 'mdi:cog-outline',
|
||||||
'items' => [
|
'items' => [
|
||||||
[
|
|
||||||
'label' => 'sidebar.general.dashboard',
|
|
||||||
'to' => '/',
|
|
||||||
'icon' => 'mdi:view-dashboard-outline',
|
|
||||||
'module' => 'core',
|
|
||||||
],
|
|
||||||
[
|
[
|
||||||
'label' => 'sidebar.core.roles',
|
'label' => 'sidebar.core.roles',
|
||||||
'to' => '/admin/roles',
|
'to' => '/admin/roles',
|
||||||
@@ -102,6 +111,12 @@ return [
|
|||||||
'label' => 'sidebar.account.section',
|
'label' => 'sidebar.account.section',
|
||||||
'icon' => 'mdi:account-circle-outline',
|
'icon' => 'mdi:account-circle-outline',
|
||||||
'items' => [
|
'items' => [
|
||||||
|
[
|
||||||
|
'label' => 'sidebar.account.dashboard',
|
||||||
|
'to' => '/',
|
||||||
|
'icon' => 'mdi:view-dashboard-outline',
|
||||||
|
'module' => 'core',
|
||||||
|
],
|
||||||
[
|
[
|
||||||
'label' => 'sidebar.account.logout',
|
'label' => 'sidebar.account.logout',
|
||||||
'to' => '/logout',
|
'to' => '/logout',
|
||||||
|
|||||||
@@ -18,11 +18,9 @@
|
|||||||
},
|
},
|
||||||
"account": {
|
"account": {
|
||||||
"section": "Mon compte",
|
"section": "Mon compte",
|
||||||
|
"dashboard": "Tableau de bord",
|
||||||
"logout": "Déconnexion"
|
"logout": "Déconnexion"
|
||||||
},
|
},
|
||||||
"general": {
|
|
||||||
"dashboard": "Tableau de bord"
|
|
||||||
},
|
|
||||||
"commercial": {
|
"commercial": {
|
||||||
"section": "Commercial",
|
"section": "Commercial",
|
||||||
"suppliers": "Répertoire fournisseurs"
|
"suppliers": "Répertoire fournisseurs"
|
||||||
|
|||||||
Reference in New Issue
Block a user