Skip to content

Taaazzz-prog/SignatureElectronique

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 Signature Électronique PDF

Python Flask Docker Security License

Application web sécurisée pour signer des fichiers PDF électroniquement avec gestion de comptes utilisateurs.

🌐 Demo en ligne

URL de production : https://signatureelectronique.taaazzz-prog.fr


🚀 FonctionnalitĂ©s

Signature de documents

  • ✅ Upload de fichiers PDF (drag & drop ou sĂ©lection)
  • ✍ CrĂ©ation de signature Ă  la souris ou au tactile
  • 📍 Positionnement personnalisable de la signature
  • 📄 Support multi-pages
  • đŸ’Ÿ TĂ©lĂ©chargement automatique du PDF signĂ©
  • 🎹 Interface moderne et intuitive avec mode sombre

Gestion de compte

  • đŸ‘€ Inscription et connexion sĂ©curisĂ©es
  • 📧 Validation d'email avec regex
  • 🔐 Hashing bcrypt pour les mots de passe
  • 📊 Historique des signatures
  • 📈 Statistiques personnalisĂ©es
  • ⚙ PrĂ©fĂ©rences personnalisables (mode sombre, notifications, auto-save)

Sécurité

  • đŸ›Ąïž Protection anti-bot avec Google reCAPTCHA v3
  • 🔒 Hashing bcrypt (12 rounds) pour tous les mots de passe
  • 🔄 Migration automatique des anciens mots de passe SHA-256
  • 🔑 SECRET_KEY pour la sĂ©curitĂ© des sessions
  • ✅ Validation stricte des emails

📋 PrĂ©requis

  • Python 3.11 ou supĂ©rieur
  • pip (gestionnaire de paquets Python)
  • Docker (optionnel, pour le dĂ©ploiement)
  • Compte Google reCAPTCHA v3 (pour la protection anti-bot)

🔧 Installation

  1. Cloner ou naviguer vers le projet
cd "d:\WEB API\SignatureElectronique"
  1. Créer un environnement virtuel (recommandé)
python -m venv venv
.\venv\Scripts\Activate.ps1
  1. Installer les dépendances
pip install -r requirements.txt
  1. Configurer les variables d'environnement
# Copier le fichier d'exemple
Copy-Item .env.example .env

# Éditer .env et configurer :
# - SECRET_KEY (générer avec: python -c "import secrets; print(secrets.token_urlsafe(32))")
# - RECAPTCHA_SECRET_KEY (obtenir sur https://www.google.com/recaptcha/admin/create)

▶ Lancement

  1. Démarrer le serveur
python app.py
  1. Ouvrir votre navigateur
http://localhost:5000

📖 Utilisation

Création de compte

  1. Cliquez sur "Inscription" dans la navigation
  2. Remplissez le formulaire (nom, email, mot de passe)
  3. La protection reCAPTCHA v3 vĂ©rifie automatiquement que vous n'ĂȘtes pas un bot
  4. Connectez-vous avec vos identifiants

Signature de documents

  1. Charger un PDF

    • Glissez-dĂ©posez votre fichier PDF dans la zone prĂ©vue
    • Ou cliquez sur "Choisir un fichier PDF"
  2. Créer votre signature

    • Dessinez votre signature sur le canvas blanc
    • Utilisez "Effacer" pour recommencer
    • Utilisez "Annuler" pour supprimer le dernier trait
  3. Configurer la position

    • SĂ©lectionnez la page Ă  signer
    • Ajustez les positions X et Y
    • Modifiez la largeur si nĂ©cessaire
  4. Signer

    • Cliquez sur "Signer le PDF"
    • Le fichier signĂ© se tĂ©lĂ©chargera automatiquement

Gestion de compte

  • Historique : Consultez toutes vos signatures passĂ©es
  • Statistiques : Visualisez vos statistiques de signature
  • Compte : GĂ©rez vos informations et prĂ©fĂ©rences
    • Mode sombre/clair
    • Notifications
    • Auto-save des signatures
    • Mode tactile optimisĂ©

📁 Structure du projet

SignatureElectronique/
├── app.py                      # Serveur Flask (API backend)
├── database.py                 # Gestion base de donnĂ©es SQLite
├── templates/
│   ├── index.html             # Page d'accueil
│   ├── base.html              # Template de base
│   ├── account.html           # Page compte utilisateur
│   ├── history.html           # Historique des signatures
│   └── stats.html             # Statistiques
├── static/
│   ├── css/                   # Feuilles de style (+ mode sombre)
│   └── js/                    # Scripts JavaScript
├── uploads/                   # PDFs uploadĂ©s (auto, ignorĂ© git)
├── signed/                    # PDFs signĂ©s (auto, ignorĂ© git)
├── signatures/                # Signatures temporaires (auto, ignorĂ© git)
├── .env                       # Variables d'environnement (SECRET!)
├── .env.example               # Template de configuration
├── docker-compose.yml         # Configuration Docker
├── Dockerfile                 # Image Docker
├── requirements.txt           # DĂ©pendances Python
└── README.md                  # Documentation

đŸ› ïž Configuration

Variables d'environnement (.env)

# Clé secrÚte Flask (OBLIGATOIRE EN PRODUCTION)
SECRET_KEY=votre-cle-secrete-unique-32-caracteres

# ClĂ© secrĂšte reCAPTCHA v3 (RECOMMANDÉ)
RECAPTCHA_SECRET_KEY=votre-cle-secrete-recaptcha

# Chemin de la base de données
DATABASE_PATH=/app/data/signature_app.db

Configuration reCAPTCHA v3

  1. Créez un compte sur Google reCAPTCHA Admin
  2. Choisissez reCAPTCHA v3
  3. Ajoutez vos domaines (localhost pour dev, votre domaine pour prod)
  4. Récupérez :
    • Site Key (publique) → À mettre dans static/js/common.js
    • Secret Key (privĂ©e) → À mettre dans .env

Limites de fichiers

Par défaut, la taille maximale des fichiers est de 16 MB. Pour modifier :

app.config['MAX_CONTENT_LENGTH'] = 32 * 1024 * 1024  # 32MB

Déploiement Docker

# Construction de l'image
docker-compose build

# Lancement
docker-compose up -d

# ArrĂȘt
docker-compose down

🔒 SĂ©curitĂ©

Protection des comptes

  • Bcrypt : Hashing des mots de passe avec 12 rounds
  • Migration automatique : Anciens mots de passe SHA-256 convertis en bcrypt
  • Validation email : Regex stricte pour les emails
  • SECRET_KEY : Protection des sessions Flask

Protection anti-bot

  • reCAPTCHA v3 : DĂ©tection intelligente des bots sans CAPTCHA visible
  • Score adaptatif : Seuil de 0.5 pour bloquer les bots suspects
  • Pas de limite de requĂȘtes pour les utilisateurs lĂ©gitimes

Protection des données

  • Fichiers stockĂ©s avec des noms UUID uniques
  • Validation stricte des types de fichiers (PDF uniquement)
  • Limite de taille de fichier configurĂ©e (16 MB par dĂ©faut)
  • .env dans .gitignore (secrets jamais commitĂ©s)
  • Base de donnĂ©es SQLite avec transactions sĂ©curisĂ©es

🐛 DĂ©pannage

Erreur "Module not found"

pip install -r requirements.txt

Port déjà utilisé

Modifiez le port dans app.py ou arrĂȘtez l'application utilisant le port 5000

ProblĂšmes de permissions

Exécutez PowerShell en tant qu'administrateur

📝 Notes

  • Les fichiers uploadĂ©s et signĂ©s sont stockĂ©s localement
  • Pour la production, ajoutez un systĂšme de nettoyage automatique des anciens fichiers
  • ConsidĂ©rez l'ajout d'une authentification pour un usage professionnel
  • Les signatures sont en format PNG transparent

🎯 AmĂ©liorations futures possibles

  • Authentification utilisateur
  • Base de donnĂ©es pour historique
  • Statistiques personnalisĂ©es
  • Mode sombre
  • Protection anti-bot (reCAPTCHA v3)
  • Hashing sĂ©curisĂ© des mots de passe (bcrypt)
  • PrĂ©visualisation PDF intĂ©grĂ©e
  • Signatures prĂ©dĂ©finies sauvegardĂ©es
  • Support de multiples signatures par document
  • Export en diffĂ©rents formats
  • Certificats numĂ©riques (PKI)
  • API REST documentĂ©e
  • Notifications email
  • Partage de documents signĂ©s

📄 Licence

Projet libre d'utilisation pour usage personnel et professionnel.

đŸ‘€ Support

Pour toute question ou problÚme, créez une issue dans le projet.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published