- Remplacement de DocuSeal par solution souveraine Odentas Sign - Système d'authentification OTP pour signataires (bcryptjs + JWT) - 8 routes API: send-otp, verify-otp, sign, pdf-url, positions, status, webhook, signers - Interface moderne avec canvas de signature et animations (framer-motion, confetti) - Système de templates pour auto-détection des positions de signature (CDDU, RG, avenants) - PDF viewer avec @react-pdf-viewer (compatible Next.js) - Stockage S3: source/, signatures/, evidence/, signed/, certs/ - Tables Supabase: sign_requests, signers, sign_positions, sign_events, sign_assets - Evidence bundle automatique (JSON metadata + timestamps) - Templates emails: OTP et completion - Scripts Lambda prêts: pades-sign (KMS seal) et tsaStamp (RFC3161) - Mode test détecté automatiquement (emails whitelist) - Tests complets avec PDF CDDU réel (2 signataires)
103 lines
2.9 KiB
Markdown
103 lines
2.9 KiB
Markdown
# ✅ Test Odentas Sign - Récapitulatif
|
|
|
|
## 🎉 Demande de signature créée avec succès !
|
|
|
|
### 📋 Informations
|
|
- **ID**: 75b4408d-1bbd-464f-a9ea-2b4e5075a817
|
|
- **Ref**: TEST-1761582838435
|
|
- **PDF**: s3://odentas-sign/source/test/TEST-1761582838435.pdf
|
|
|
|
### 👥 Signataires
|
|
|
|
#### 1. Employeur - Odentas Paie
|
|
- **Email**: paie@odentas.fr
|
|
- **Signer ID**: 95c4ccdc-1a26-4426-a56f-653758159b54
|
|
|
|
#### 2. Salarié - Renaud Breviere
|
|
- **Email**: renaud.breviere@gmail.com
|
|
- **Signer ID**: d481f070-2ac6-4f82-aff3-862783904d5d
|
|
|
|
---
|
|
|
|
## 🚀 Comment tester ?
|
|
|
|
### Option 1 : Script interactif (recommandé)
|
|
|
|
```bash
|
|
./test-signature-flow.sh
|
|
```
|
|
|
|
Le script vous propose un menu pour :
|
|
1. Envoyer OTP Employeur
|
|
2. Envoyer OTP Salarié
|
|
3. Vérifier OTP et obtenir le token
|
|
4. Enregistrer la signature
|
|
|
|
### Option 2 : Commandes manuelles
|
|
|
|
#### Étape 1 : Envoyer OTP Employeur
|
|
```bash
|
|
curl -X POST http://localhost:3000/api/odentas-sign/signers/95c4ccdc-1a26-4426-a56f-653758159b54/send-otp
|
|
```
|
|
|
|
**➡️ Le code OTP apparaît dans les logs du serveur Next.js**
|
|
|
|
#### Étape 2 : Vérifier OTP
|
|
```bash
|
|
curl -X POST http://localhost:3000/api/odentas-sign/signers/95c4ccdc-1a26-4426-a56f-653758159b54/verify-otp \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"otp": "VOTRE_CODE"}'
|
|
```
|
|
|
|
Copiez le `sessionToken` retourné.
|
|
|
|
#### Étape 3 : Signer
|
|
```bash
|
|
curl -X POST http://localhost:3000/api/odentas-sign/signers/95c4ccdc-1a26-4426-a56f-653758159b54/sign \
|
|
-H "Content-Type: application/json" \
|
|
-H "Authorization: Bearer VOTRE_TOKEN" \
|
|
-d '{"signatureImageBase64": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAAAyCAYAAACqNX6+AAAABmJLR0QA/wD/AP+gvaeTAAAAeklEQVR4nO3QMQEAAAjAMMC/52ECvlRA00ASAgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQcNkFzQABOWLnlYwAAAAASUVORK5CYII=", "consentText": "Je consens"}'
|
|
```
|
|
|
|
#### Étape 4 : Répéter pour le salarié
|
|
|
|
Utilisez le signer ID : `d481f070-2ac6-4f82-aff3-862783904d5d`
|
|
|
|
---
|
|
|
|
## 🔍 Vérifier le statut
|
|
|
|
```bash
|
|
curl http://localhost:3000/api/odentas-sign/requests/75b4408d-1bbd-464f-a9ea-2b4e5075a817
|
|
```
|
|
|
|
---
|
|
|
|
## ⚠️ Mode Test Actif
|
|
|
|
- ✅ Les codes OTP sont affichés dans les logs serveur
|
|
- ✅ Les emails sont envoyés vers les vraies adresses
|
|
- ❌ Le scellage PAdES est désactivé
|
|
- ❌ L'horodatage TSA est désactivé
|
|
- ❌ L'archivage Object Lock est désactivé
|
|
|
|
Une fois tous les signataires signés, le webhook de completion sera appelé mais ne déclenchera PAS le scellage.
|
|
|
|
---
|
|
|
|
## 📊 Vérifier dans Supabase
|
|
|
|
```sql
|
|
-- Voir la demande
|
|
SELECT * FROM sign_requests WHERE ref = 'TEST-1761582838435';
|
|
|
|
-- Voir les signataires
|
|
SELECT * FROM signers WHERE request_id = '75b4408d-1bbd-464f-a9ea-2b4e5075a817';
|
|
|
|
-- Voir les événements
|
|
SELECT * FROM sign_events WHERE request_id = '75b4408d-1bbd-464f-a9ea-2b4e5075a817' ORDER BY ts ASC;
|
|
```
|
|
|
|
---
|
|
|
|
**Bonne chance pour les tests ! 🎯**
|