From 11fdf8d1bf5dd392299eb9f95affb4c320abfe93 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Fri, 22 May 2026 14:28:48 +0200 Subject: [PATCH] =?UTF-8?q?fix(absences)=20:=20durcissement=20RGPD=20des?= =?UTF-8?q?=20donn=C3=A9es=20RH=20des=20utilisateurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Suite à la revue de conformité du module absences. Fuite corrigée : GET /api/users et /api/users/{id} n'avaient aucun contrôle d'accès alors que le groupe user:list exposait les données RH/familiales (date d'embauche, contrat, soldes de CP, rôles…). Tout utilisateur authentifié pouvait donc lire ces informations sur tous ses collègues. - chaque champ RH (isEmployee, hireDate, endDate, contractType, workTimeRatio, annualLeaveDays, referencePeriodStart, initialLeaveBalance) ainsi que roles est désormais exposé via #[ApiProperty(security: "is_granted('ROLE_ADMIN') or object == user")] : visible uniquement par un admin ou par l'utilisateur lui-même. id et username restent publics (sélecteurs d'assigné, avatars). Minimisation : suppression de familySituation et nbChildren, collectés et exposés (form RH, API, outil MCP) mais utilisés par aucun calcul. - entité User + enum FamilySituation + migration de drop des colonnes - Serializer MCP, update-user (MCP), EmployeeDrawer, DTO, fixtures, i18n Co-Authored-By: Claude Opus 4.7 (1M context) --- .../components/absence/EmployeeDrawer.vue | 28 +----------- frontend/i18n/locales/fr.json | 11 +---- frontend/services/dto/user-data.ts | 5 --- migrations/Version20260522140000.php | 33 ++++++++++++++ src/DataFixtures/AppFixtures.php | 6 --- src/Entity/User.php | 45 +++++-------------- src/Enum/FamilySituation.php | 25 ----------- src/Mcp/Tool/Reference/UpdateUserTool.php | 14 +----- src/Mcp/Tool/Serializer.php | 2 - 9 files changed, 47 insertions(+), 122 deletions(-) create mode 100644 migrations/Version20260522140000.php delete mode 100644 src/Enum/FamilySituation.php diff --git a/frontend/components/absence/EmployeeDrawer.vue b/frontend/components/absence/EmployeeDrawer.vue index ae1029e..3684da5 100644 --- a/frontend/components/absence/EmployeeDrawer.vue +++ b/frontend/components/absence/EmployeeDrawer.vue @@ -24,13 +24,6 @@ empty-option-label="—" group-class="w-full" /> - -