FEAT: Service ICameraAccessService — résolution des accès caméra par utilisateur #132
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall#132
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
Service central de résolution des droits d'accès aux caméras pour un utilisateur donné. Ce service est le cœur du système de contrôle d'accès granulaire : il détermine quelles caméras un utilisateur peut voir, en croisant son rôle, ses assignations de sites, et ses assignations de caméras spécifiques.
Référence spec
Section 4.2 Permissions (Policies) — résolution des droits.
État actuel
UserSite)[Authorize(Policy = AppPermissions.CameraRead)]sans filtrage granulaireÀ faire
Créer
ICameraAccessServicedansHeimdall.Application/Services/:HasCameraAccessAsync(userId, cameraId)→ vérifie l'accès à une caméraGetAccessibleCameraIdsAsync(userId, siteId)→ IDs des caméras accessibles pour un siteGetAccessibleSiteIdsAsync(userId)→ IDs des sites accessiblesApplyCameraFilter(query, userId)→ filtre un IQueryableImplémenter
CameraAccessService:UserSitepuisUserCameraAccess:UserCameraAccessavecCameraId = nullpour ce site → toutes les camérasUserCameraAccessUserSiteniUserCameraAccess→ pas d'accèsEnregistrer le service dans DI (
ServiceCollectionExtensions)Créer les tests unitaires :
Critères d'acceptation
ICameraAccessServicecrééeIQueryable<Camera>fonctionnelFichiers concernés
src/Heimdall.Application/Services/ICameraAccessService.cs(nouveau)src/Heimdall.Application/Services/CameraAccessService.cs(nouveau)src/Heimdall.Infrastructure/DependencyInjection.cstests/Heimdall.Tests/Services/CameraAccessServiceTests.cs(nouveau)Maquette
N/A — ticket backend sans composante UI.