From f6d37e46674ea5358e24aed235416a5c42c3b270 Mon Sep 17 00:00:00 2001 From: Matthieu Date: Mon, 22 Jun 2026 17:28:07 +0200 Subject: [PATCH] fix(api) : register #[ApiFilter] services by mapping module entity paths MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Modular monolith moved entities out of src/Entity into src/Module/*/Domain/Entity without configuring api_platform.mapping.paths. Resources stayed discoverable via service autoconfiguration, but annotated filter services were registered only for classes found in resource_class_directories (the now-empty default src/Entity and src/ApiResource), so every #[ApiFilter] (SearchFilter, BooleanFilter, OrderFilter, DateFilter) was silently ignored across the whole API — collection filters never narrowed results (my-tasks showed all users' tasks, time entries leaked across users, directory would leak per-client data). Declare the seven module entity directories under mapping.paths so the annotated filter services are generated again. --- config/packages/api_platform.yaml | 14 ++++++++++++++ .../pages/{directory.vue => directory/index.vue} | 0 2 files changed, 14 insertions(+) rename frontend/modules/directory/pages/{directory.vue => directory/index.vue} (100%) diff --git a/config/packages/api_platform.yaml b/config/packages/api_platform.yaml index 8b825c8..e8f764d 100644 --- a/config/packages/api_platform.yaml +++ b/config/packages/api_platform.yaml @@ -1,6 +1,20 @@ api_platform: title: Lesstime API version: 1.0.0 + # Modular monolith: entities (and their #[ApiFilter] attributes) live under + # src/Module/*/Domain/Entity, not the default src/Entity. Resources are still + # discovered via service autoconfiguration, but #[ApiFilter] services are only + # registered for classes found in these paths — without them, every filter is + # silently ignored. Decoupled ApiResource classes stay discovered via tags. + mapping: + paths: + - '%kernel.project_dir%/src/Module/Core/Domain/Entity' + - '%kernel.project_dir%/src/Module/TimeTracking/Domain/Entity' + - '%kernel.project_dir%/src/Module/ProjectManagement/Domain/Entity' + - '%kernel.project_dir%/src/Module/Absence/Domain/Entity' + - '%kernel.project_dir%/src/Module/Directory/Domain/Entity' + - '%kernel.project_dir%/src/Module/Mail/Domain/Entity' + - '%kernel.project_dir%/src/Module/Integration/Domain/Entity' formats: jsonld: ['application/ld+json'] json: ['application/json'] diff --git a/frontend/modules/directory/pages/directory.vue b/frontend/modules/directory/pages/directory/index.vue similarity index 100% rename from frontend/modules/directory/pages/directory.vue rename to frontend/modules/directory/pages/directory/index.vue