FEAT: API Endpoints — gestion des accès caméra par utilisateur (CRUD) #133

Open
opened 2026-08-18 08:56:33 +02:00 by nonobis · 0 comments
Owner

Contexte

Endpoints API permettant à un administrateur de gérer les accès caméra granulaires pour chaque utilisateur.

Référence spec

Section 4.2 Permissions (Policies) — extension des endpoints.

État actuel

  • PUT /api/users/{id}/sites : assigne des sites (toutes les caméras) — existe
  • Pas d'endpoint pour assigner des caméras spécifiques
  • Pas d'endpoint pour lister les accès caméra

À faire

  1. GET /api/users/{id}/camera-access — Lister les accès :

    [
      { "siteId": "...", "siteName": "Site A", "cameraId": null, "cameraName": null, "accessType": "site-wide" },
      { "siteId": "...", "siteName": "Site A", "cameraId": "...", "cameraName": "Cam 1", "accessType": "camera-specific" }
    ]
    
  2. PUT /api/users/{id}/camera-access — Remplacer tous les accès :

    {
      "siteIds": ["site-a-id", "site-b-id"],
      "cameraAssignments": [
        { "siteId": "...", "cameraIds": ["cam-1", "cam-2"] }
      ]
    }
    
  3. DELETE /api/users/{id}/camera-access — Supprimer un accès

  4. Validation : les siteIds/cameraIds doivent exister

  5. Seul un Admin peut gérer les accès

  6. Audit logging des changements

Critères d'acceptation

  • GET retourne la liste complète des accès
  • PUT remplace atomiquement tous les accès
  • DELETE supprime un accès spécifique
  • Seul un Admin peut gérer les accès
  • Audit log généré pour chaque changement
  • Tests d'intégration passent

Fichiers concernés

  • src/Heimdall.Application/Users/Commands/AssignCameraAccess/ (nouveau)
  • src/Heimdall.Application/Users/Queries/GetUserCameraAccess/ (nouveau)
  • src/Heimdall.Web/Controllers/UsersController.cs
  • src/Heimdall.Infrastructure/Security/AppPermissions.cs
## Contexte Endpoints API permettant à un administrateur de gérer les accès caméra granulaires pour chaque utilisateur. ## Référence spec Section 4.2 Permissions (Policies) — extension des endpoints. ## État actuel - `PUT /api/users/{id}/sites` : assigne des sites (toutes les caméras) — existe - Pas d'endpoint pour assigner des caméras spécifiques - Pas d'endpoint pour lister les accès caméra ## À faire 1. **GET /api/users/{id}/camera-access** — Lister les accès : ```json [ { "siteId": "...", "siteName": "Site A", "cameraId": null, "cameraName": null, "accessType": "site-wide" }, { "siteId": "...", "siteName": "Site A", "cameraId": "...", "cameraName": "Cam 1", "accessType": "camera-specific" } ] ``` 2. **PUT /api/users/{id}/camera-access** — Remplacer tous les accès : ```json { "siteIds": ["site-a-id", "site-b-id"], "cameraAssignments": [ { "siteId": "...", "cameraIds": ["cam-1", "cam-2"] } ] } ``` 3. **DELETE /api/users/{id}/camera-access** — Supprimer un accès 4. Validation : les siteIds/cameraIds doivent exister 5. Seul un Admin peut gérer les accès 6. Audit logging des changements ## Critères d'acceptation - [ ] GET retourne la liste complète des accès - [ ] PUT remplace atomiquement tous les accès - [ ] DELETE supprime un accès spécifique - [ ] Seul un Admin peut gérer les accès - [ ] Audit log généré pour chaque changement - [ ] Tests d'intégration passent ## Fichiers concernés - `src/Heimdall.Application/Users/Commands/AssignCameraAccess/` (nouveau) - `src/Heimdall.Application/Users/Queries/GetUserCameraAccess/` (nouveau) - `src/Heimdall.Web/Controllers/UsersController.cs` - `src/Heimdall.Infrastructure/Security/AppPermissions.cs`
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#133
No description provided.