Cette application Sinatra démontre comment intégrer une plateforme de marchés publics avec l'API OAuth2 de Passe Marché.
Fournir un exemple concret d'intégration OAuth2 avec Passe Marché, incluant :
- Authentification via Client Credentials flow
- Stockage et gestion des tokens
- Interface utilisateur pour visualiser les tokens
- Mécanisme de rafraîchissement des tokens
- Sinatra : Framework web léger
- SQLite : Base de données locale pour le stockage des tokens
- Sequel : ORM pour la gestion de la base de données
- HTTParty : Client HTTP pour les appels API
- dotenv : Gestion des variables d'environnement
- Ruby 3.4.5
- Passe Marché en cours d'exécution sur http://localhost:3000
- Éditeur demo configuré dans Passe Marché
cd fake_editor_app
bundle installcp .env.example .envÉditez le fichier .env avec vos paramètres :
FAST_TRACK_URL=http://localhost:3000
CLIENT_ID=demo_editor_client
CLIENT_SECRET=demo_editor_secret
PORT=4567
RACK_ENV=development
Dans la console Rails de Passe Marché :
demo_editor = Editor.create!(
name: 'Demo Editor App',
client_id: 'demo_editor_client',
client_secret: 'demo_editor_secret',
completion_webhook_url: 'http://localhost:4567/webhooks/voie-rapide',
redirect_url: 'http://localhost:4567?completed={market_identifier}',
authorized: true,
active: true
)
demo_editor.generate_webhook_secret!
demo_editor.sync_to_doorkeeper!Note: Les URLs de webhook et redirection sont configurées pour pointer vers l'application fake editor sur le port 4567.
bundle exec rackup -p 4567Ouvrez votre navigateur à : http://localhost:4567
- Cliquez sur "S'authentifier" pour obtenir un token OAuth2
- Le token sera affiché avec ses détails (type, scope, expiration)
- Créez un marché public avec le formulaire
- Cliquez sur l'URL de configuration pour accéder à Passe Marché
- Complétez la configuration du marché dans Passe Marché
- À la fin, le marché sera marqué comme "Terminé" via webhook
- Utilisez "Rafraîchir le Token" si nécessaire
- Utilisez "Effacer les Tokens" pour nettoyer la base de données
fake_editor_app/
├── app.rb # Application Sinatra principale
├── config.ru # Configuration Rack
├── Gemfile # Dépendances Ruby
├── .env.example # Template de configuration
├── lib/
│ ├── database.rb # Configuration SQLite et modèles
│ └── fast_track_client.rb # Client OAuth2 pour Passe Marché
├── views/
│ ├── layout.erb # Template de base
│ └── dashboard.erb # Interface du dashboard
├── public/
│ ├── style.css # Styles CSS
│ └── app.js # JavaScript client
└── README.md # Cette documentation
- Client Credentials flow
- Gestion automatique des tokens
- Stockage sécurisé en base SQLite
- Formulaire de création avec validation
- Intégration avec l'API Passe Marché
- Stockage local des marchés créés
- Endpoint
/webhooks/voie-rapidepour les notifications - Traitement automatique des événements de completion
- Mise à jour du statut des marchés en temps réel
- Dashboard avec statut d'authentification
- Affichage des détails du token
- Liste des marchés publics avec leur statut
- Boutons pour authentification/rafraîchissement
- Countdown en temps réel pour l'expiration
- Base de données SQLite locale
- Modèle Token avec validation d'expiration
- Modèle Market pour les marchés publics
- Nettoyage automatique des anciens tokens
- Variables d'environnement pour les secrets
- Tokens stockés localement uniquement
- Validation d'expiration des tokens
- Interface sécurisée sans exposition des secrets
- Vérifiez que Passe Marché est lancé
- Vérifiez les variables d'environnement
- Assurez-vous que l'éditeur demo est créé et autorisé
- Le fichier SQLite sera créé automatiquement
- Supprimez
fake_editor.dbpour réinitialiser
- Changez le port dans
.envsi 4567 est occupé - Utilisez
bundle exec rackup -p AUTRE_PORT
Cette application sert d'exemple pour :
- Guide d'Intégration API
- Implémentation OAuth2 Client Credentials
- Gestion des tokens et erreurs
- Interface utilisateur pour l'authentification
Cette application est un exemple de démonstration. Pour des améliorations :
- Créez une branche feature
- Testez vos modifications
- Assurez-vous que l'intégration fonctionne
- Créez une pull request
Application de démonstration pour l'intégration OAuth2 avec Passe Marché