Appearance
BDD-17 — Copie du lien d'un fichier
🔗 Ticket fonctionnel
Copier un lien sécurisé vers un fichier
Le client externe peut copier un lien applicatif vers un fichier depose. L'acces reel au fichier reste verifie par le backend a l'ouverture du lien.
1. User Story
En tant que client externe,
Je veux obtenir un lien direct vers un fichier depose,
Afin de pouvoir le partager ou y faire reference facilement.
2. Criteres d'acceptance
- Un bouton
Copier le lienest disponible sur chaque fichier. - Le lien est copie dans le presse-papier avec confirmation visuelle.
- Le lien est securise et accessible uniquement aux personnes autorisees.
3. Flux complet
mermaid
sequenceDiagram
autonumber
participant U as 👤 Client externe
participant F as 🖥️ Front
participant C as 📋 Presse-papier
participant API as 🧠 API NestJS
participant DB as 🗄️ prisma.tool
participant S3 as ☁️ Object Storage
U->>F: Clique "Copier le lien"
F->>C: Copie /files/:documentUuid
F-->>U: Confirmation visuelle
U->>F: Ouvre le lien /files/:documentUuid
F->>API: GET /documents/:uuid/access-url
API->>API: AuthGuard
API->>DB: Verifie users_documents.user_id
DB-->>API: bucket / path / name
API->>S3: Genere une URL pre-signee inline
API-->>F: url + filename
F-->>U: Propose l'ouverture du fichier4. Choix de securite
Le lien copie n'est pas une URL S3 pre-signee. C'est un lien applicatif :
text
/files/:documentUuidL'URL S3 temporaire est generee uniquement apres authentification et verification des droits. Un utilisateur non autorise ne peut donc pas obtenir l'URL de stockage. Le lien expose un uuid public non predictible, jamais l'ID numerique interne.
Le lien ne donne aucun droit a lui seul : l'utilisateur doit etre authentifie et deja autorise sur le document cote backend.
5. Perimetre fonctionnel
- Menu document :
front/src/components/documents/DocumentListItem.vue - Copie clipboard :
front/src/pages/upload/UploadPage.vue - Page d'acces :
front/src/pages/documents/DocumentAccessPage.vue - Route front :
front/src/router/routes.js - Store Pinia :
front/src/stores/files-store.js - Endpoint back :
GET /documents/:uuid/access-url - Policy back :
back/src/api/documents/document-access-policy.service.ts - Service back :
back/src/api/documents/document.service.ts
6. Apercu de l'interface

Menu trois points sur un fichier — actions "Telecharger" (format d'origine) et "Copier le lien" (acces securise).
7. Points de verification
- L'action
Copier le lienest visible dans le menu trois points. - Le lien copie a la forme
/files/:documentUuid. - Une notification confirme la copie.
- Une notification d'erreur est affichee si le navigateur refuse l'acces au presse-papier.
- La route
/files/:documentUuidest protegee par l'auth front existante. - Le backend verifie l'appartenance du document avant de signer une URL S3 temporaire.
8. Tests associes
front/src/__tests__/components/documents/DocumentListItem.spec.jsfront/src/__tests__/pages/upload/UploadPage.spec.jsfront/src/__tests__/pages/documents/DocumentAccessPage.spec.jsfront/src/__tests__/stores/files-store.spec.jsfront/src/__tests__/router/routes.spec.jsback/src/api/documents/document.service.spec.ts
