FEAT: Filtrage caméras — adapter GetCamerasBySite aux droits utilisateur #135

Closed
opened 2026-08-18 08:57:24 +02:00 by nonobis · 0 comments
Owner

Contexte

Le endpoint GET /api/cameras/by-site/{siteId} retourne toutes les caméras sans filtrage. Il faut appliquer le filtrage via ICameraAccessService.

Référence spec

Section 4.2 Permissions — filtrage des données.

État actuel

  • GetCamerasBySiteQueryHandler : retourne toutes les caméras du site
  • L'authorization est au niveau rôle, pas au niveau caméra individuelle

À faire

  1. Injecter ICameraAccessService dans GetCamerasBySiteQueryHandler
  2. Filtrer les résultats selon GetAccessibleCameraIdsAsync(userId, siteId)
  3. Admin → pas de filtrage
  4. Vérifier aussi GetCameraById (vérifier accès avant retour)
  5. Vérifier StreamingHub.RequestStream (vérifier accès caméra, pas juste site)

Critères d'acceptation

  • GetCamerasBySite filtre selon les droits
  • Admin voit toutes les caméras
  • User avec accès site-wide voit toutes les caméras
  • User avec caméras spécifiques ne voit que celles-ci
  • GetCameraById vérifie l'accès
  • Tests passent

Fichiers concernés

  • src/Heimdall.Application/Cameras/Queries/GetCamerasBySite/GetCamerasBySiteQuery.cs
  • src/Heimdall.Application/Cameras/Queries/GetCamera/GetCameraQuery.cs
  • tests/Heimdall.Tests/Cameras/
## Contexte Le endpoint `GET /api/cameras/by-site/{siteId}` retourne toutes les caméras sans filtrage. Il faut appliquer le filtrage via `ICameraAccessService`. ## Référence spec Section 4.2 Permissions — filtrage des données. ## État actuel - `GetCamerasBySiteQueryHandler` : retourne toutes les caméras du site - L'authorization est au niveau rôle, pas au niveau caméra individuelle ## À faire 1. Injecter `ICameraAccessService` dans `GetCamerasBySiteQueryHandler` 2. Filtrer les résultats selon `GetAccessibleCameraIdsAsync(userId, siteId)` 3. Admin → pas de filtrage 4. Vérifier aussi `GetCameraById` (vérifier accès avant retour) 5. Vérifier `StreamingHub.RequestStream` (vérifier accès caméra, pas juste site) ## Critères d'acceptation - [ ] GetCamerasBySite filtre selon les droits - [ ] Admin voit toutes les caméras - [ ] User avec accès site-wide voit toutes les caméras - [ ] User avec caméras spécifiques ne voit que celles-ci - [ ] GetCameraById vérifie l'accès - [ ] Tests passent ## Fichiers concernés - `src/Heimdall.Application/Cameras/Queries/GetCamerasBySite/GetCamerasBySiteQuery.cs` - `src/Heimdall.Application/Cameras/Queries/GetCamera/GetCameraQuery.cs` - `tests/Heimdall.Tests/Cameras/`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#135
No description provided.