sunuid-sdk 1.0.52 → 1.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,309 +0,0 @@
1
- <?php
2
-
3
- require_once __DIR__ . '/../vendor/autoload.php';
4
-
5
- use SunuID\SunuID;
6
- use SunuID\Exception\SunuIDException;
7
-
8
- /**
9
- * Exemple d'utilisation sécurisée du SDK PHP SunuID
10
- *
11
- * Cet exemple montre comment utiliser le SDK de manière sécurisée
12
- * sans exposer les credentials dans le code.
13
- */
14
-
15
- // ========================================
16
- // CONFIGURATION SÉCURISÉE
17
- // ========================================
18
-
19
- // Option 1: Configuration avec initialisation sécurisée (RECOMMANDÉE)
20
- $secureConfig = [
21
- 'type' => 2, // 1=KYC, 2=AUTH, 3=SIGNATURE
22
- 'partner_name' => 'MonApplicationSécurisée',
23
- 'theme' => 'light',
24
- 'language' => 'fr',
25
-
26
- // Activer l'initialisation sécurisée
27
- 'secure_init' => true,
28
- 'secure_init_url' => __DIR__ . '/../secure-init.php', // Chemin vers votre endpoint sécurisé
29
-
30
- // Options de sécurité
31
- 'enable_security_logs' => true,
32
- 'validate_inputs' => true,
33
- 'max_retries' => 3,
34
- 'request_timeout' => 10,
35
- 'token_max_age' => 300, // 5 minutes
36
-
37
- // Logs
38
- 'enable_logs' => true,
39
- 'log_level' => \Monolog\Logger::INFO,
40
- 'log_file' => 'sunuid-secure.log'
41
- ];
42
-
43
- // Option 2: Configuration traditionnelle (moins sécurisée)
44
- $traditionalConfig = [
45
- 'client_id' => '1754166754_221A57B46843D755',
46
- 'secret_id' => '56d40fe70507228b27f2640ae65894177c2fedbf246e2b30978fde1fc43953c5',
47
- 'type' => 2,
48
- 'partner_name' => 'MonApplication',
49
- 'enable_security_logs' => true,
50
- 'validate_inputs' => true
51
- ];
52
-
53
- // ========================================
54
- // FONCTIONS UTILITAIRES
55
- // ========================================
56
-
57
- /**
58
- * Afficher les informations de sécurité
59
- */
60
- function displaySecurityInfo(SunuID $sunuid): void
61
- {
62
- echo "🔒 Informations de Sécurité:\n";
63
- echo " - Initialisé: " . ($sunuid->isInitialized() ? '✅' : '❌') . "\n";
64
- echo " - Configuration sécurisée: " . ($sunuid->getConfig()['secure_init'] ? '✅' : '❌') . "\n";
65
- echo " - Logs de sécurité activés: " . ($sunuid->getConfig()['enable_security_logs'] ? '✅' : '❌') . "\n";
66
- echo " - Validation des entrées: " . ($sunuid->getConfig()['validate_inputs'] ? '✅' : '❌') . "\n";
67
-
68
- if ($sunuid->getConfig()['secure_init']) {
69
- echo " - Token: " . ($sunuid->getConfig()['token'] ? '***' . substr($sunuid->getConfig()['token'], -8) : 'null') . "\n";
70
- echo " - Expire dans: " . ($sunuid->getConfig()['expires_in'] ?? 'N/A') . " secondes\n";
71
- echo " - Requêtes: " . $sunuid->getConfig()['request_count'] . "/" . ($sunuid->getConfig()['max_requests'] ?? '∞') . "\n";
72
- }
73
-
74
- echo "\n";
75
- }
76
-
77
- /**
78
- * Afficher les logs de sécurité
79
- */
80
- function displaySecurityLogs(SunuID $sunuid): void
81
- {
82
- $logs = $sunuid->getSecurityLogs();
83
-
84
- if (empty($logs)) {
85
- echo "📝 Aucun log de sécurité disponible\n\n";
86
- return;
87
- }
88
-
89
- echo "📝 Logs de Sécurité (" . count($logs) . " événements):\n";
90
- foreach ($logs as $log) {
91
- $level = str_contains($log['event'], 'ERROR') ? '❌' :
92
- (str_contains($log['event'], 'SUCCESS') ? '✅' : 'ℹ️');
93
-
94
- echo " {$level} {$log['timestamp']} - {$log['event']}\n";
95
- if (!empty($log['data'])) {
96
- echo " Données: " . json_encode($log['data']) . "\n";
97
- }
98
- }
99
- echo "\n";
100
- }
101
-
102
- // ========================================
103
- // EXEMPLE 1: UTILISATION SÉCURISÉE
104
- // ========================================
105
-
106
- echo "🚀 EXEMPLE 1: Utilisation Sécurisée\n";
107
- echo "=====================================\n\n";
108
-
109
- try {
110
- // Créer l'instance SDK avec configuration sécurisée
111
- $sunuid = new SunuID($secureConfig);
112
-
113
- echo "✅ SDK créé avec configuration sécurisée\n";
114
-
115
- // Initialiser le SDK (les credentials seront récupérés automatiquement)
116
- $sunuid->init();
117
-
118
- echo "✅ SDK initialisé de manière sécurisée\n";
119
-
120
- // Afficher les informations de sécurité
121
- displaySecurityInfo($sunuid);
122
-
123
- // Récupérer les informations du partenaire
124
- $partnerInfo = $sunuid->getPartnerInfo();
125
- echo "📋 Informations partenaire: " . json_encode($partnerInfo, JSON_PRETTY_PRINT) . "\n\n";
126
-
127
- // Générer un QR code d'authentification
128
- echo "🎯 Génération QR code d'authentification...\n";
129
- $qrResult = $sunuid->generateQR();
130
-
131
- echo "✅ QR Code généré:\n";
132
- echo " - URL: " . $qrResult['qr_code_url'] . "\n";
133
- echo " - Contenu: " . $qrResult['content'] . "\n";
134
- echo " - Session ID: " . $qrResult['session_id'] . "\n";
135
- echo " - Label: " . $qrResult['label'] . "\n";
136
- echo " - Type: " . $qrResult['type'] . "\n";
137
- echo " - Partenaire: " . $qrResult['partner_name'] . "\n\n";
138
-
139
- // Vérifier le statut du QR code
140
- echo "📊 Vérification du statut du QR code...\n";
141
- $status = $sunuid->checkQRStatus($qrResult['session_id']);
142
- echo "📊 Statut QR: " . json_encode($status, JSON_PRETTY_PRINT) . "\n\n";
143
-
144
- // Afficher les logs de sécurité
145
- displaySecurityLogs($sunuid);
146
-
147
- } catch (SunuIDException $e) {
148
- echo "❌ Erreur SunuID: " . $e->getMessage() . "\n";
149
- echo "📍 Code: " . $e->getErrorCode() . "\n";
150
- echo "📍 Contexte: " . json_encode($e->getContext()) . "\n";
151
- } catch (Exception $e) {
152
- echo "❌ Erreur: " . $e->getMessage() . "\n";
153
- echo "📍 Fichier: " . $e->getFile() . ":" . $e->getLine() . "\n";
154
- }
155
-
156
- // ========================================
157
- // EXEMPLE 2: GÉNÉRATION DE DIFFÉRENTS TYPES
158
- // ========================================
159
-
160
- echo "\n🚀 EXEMPLE 2: Génération de Différents Types\n";
161
- echo "==============================================\n\n";
162
-
163
- try {
164
- $sunuid = new SunuID($secureConfig);
165
- $sunuid->init();
166
-
167
- // Générer un QR code KYC
168
- echo "📋 Génération QR code KYC...\n";
169
- $kycQR = $sunuid->generateCustomQR(1, null, ['label' => 'Vérification d\'identité']);
170
- echo "✅ QR KYC généré: " . $kycQR['qr_code_url'] . "\n\n";
171
-
172
- // Générer un QR code de signature
173
- echo "✍️ Génération QR code Signature...\n";
174
- $signatureQR = $sunuid->generateCustomQR(3, null, ['label' => 'Signature électronique']);
175
- echo "✅ QR Signature généré: " . $signatureQR['qr_code_url'] . "\n\n";
176
-
177
- } catch (Exception $e) {
178
- echo "❌ Erreur: " . $e->getMessage() . "\n";
179
- }
180
-
181
- // ========================================
182
- // EXEMPLE 3: GESTION DES CALLBACKS
183
- // ========================================
184
-
185
- echo "\n🚀 EXEMPLE 3: Gestion des Callbacks\n";
186
- echo "=====================================\n\n";
187
-
188
- try {
189
- $sunuid = new SunuID($secureConfig);
190
- $sunuid->init();
191
-
192
- // Générer un état de sécurité
193
- $state = $sunuid->generateState();
194
- echo "🔐 État de sécurité généré: " . $state . "\n";
195
-
196
- // Simuler un callback (en production, cela viendrait de l'API SunuID)
197
- $callbackData = [
198
- 'token' => 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoxMjMsInNlc3Npb25faWQiOiJzZXNzaW9uXzEyMyIsInBhcnRuZXJfaWQiOjIxLCJ0eXBlIjoyLCJpYXQiOjE2MzQ1Njc4OTAsImV4cCI6MTYzNDU3MTQ5MH0.signature',
199
- 'session_id' => 'session_123',
200
- 'user_id' => 123,
201
- 'partner_id' => 21,
202
- 'type' => 2,
203
- 'timestamp' => time(),
204
- 'state' => $state
205
- ];
206
-
207
- echo "📨 Simulation d'un callback reçu...\n";
208
- echo "📋 Données callback: " . json_encode($callbackData, JSON_PRETTY_PRINT) . "\n\n";
209
-
210
- // Valider le callback
211
- $isValid = $sunuid->validateCallback($callbackData);
212
- echo "🔍 Validation du callback: " . ($isValid ? '✅ Valide' : '❌ Invalide') . "\n";
213
-
214
- if ($isValid) {
215
- // Traiter l'authentification
216
- $authResult = $sunuid->processAuthentication($callbackData);
217
- echo "✅ Authentification traitée:\n";
218
- echo " - User ID: " . $authResult['user_id'] . "\n";
219
- echo " - Session ID: " . $authResult['session_id'] . "\n";
220
- echo " - Partner ID: " . $authResult['partner_id'] . "\n";
221
- echo " - Type: " . $authResult['type'] . "\n";
222
- echo " - Timestamp: " . $authResult['timestamp'] . "\n\n";
223
- }
224
-
225
- } catch (Exception $e) {
226
- echo "❌ Erreur: " . $e->getMessage() . "\n";
227
- }
228
-
229
- // ========================================
230
- // EXEMPLE 4: GESTION DES ERREURS
231
- // ========================================
232
-
233
- echo "\n🚀 EXEMPLE 4: Gestion des Erreurs\n";
234
- echo "===================================\n\n";
235
-
236
- try {
237
- // Configuration invalide pour tester la gestion d'erreurs
238
- $invalidConfig = [
239
- 'type' => 2,
240
- 'secure_init' => false, // Pas d'initialisation sécurisée
241
- 'client_id' => '', // Client ID vide
242
- 'secret_id' => 'trop_court', // Secret ID trop court
243
- 'enable_security_logs' => true
244
- ];
245
-
246
- echo "🧪 Test avec configuration invalide...\n";
247
- $sunuid = new SunuID($invalidConfig);
248
- $sunuid->init(); // Cela devrait lever une exception
249
-
250
- } catch (SunuIDException $e) {
251
- echo "❌ Erreur SunuID capturée:\n";
252
- echo " - Message: " . $e->getMessage() . "\n";
253
- echo " - Code: " . $e->getErrorCode() . "\n";
254
- echo " - Contexte: " . json_encode($e->getContext()) . "\n\n";
255
- } catch (Exception $e) {
256
- echo "❌ Erreur générale: " . $e->getMessage() . "\n\n";
257
- }
258
-
259
- // ========================================
260
- // EXEMPLE 5: UTILISATION AVEC VARIABLES D'ENVIRONNEMENT
261
- // ========================================
262
-
263
- echo "\n🚀 EXEMPLE 5: Utilisation avec Variables d'Environnement\n";
264
- echo "==========================================================\n\n";
265
-
266
- // En production, vous utiliseriez des variables d'environnement
267
- // $_ENV['SUNUID_CLIENT_ID'] = 'votre_client_id';
268
- // $_ENV['SUNUID_SECRET_ID'] = 'votre_secret_id';
269
-
270
- try {
271
- $envConfig = [
272
- 'type' => 2,
273
- 'partner_name' => 'AppProduction',
274
- 'secure_init' => true,
275
- 'secure_init_url' => __DIR__ . '/../secure-init.php',
276
- 'enable_security_logs' => true,
277
- 'validate_inputs' => true,
278
- 'log_file' => 'sunuid-production.log'
279
- ];
280
-
281
- echo "🏭 Configuration production avec variables d'environnement...\n";
282
- $sunuid = new SunuID($envConfig);
283
- $sunuid->init();
284
-
285
- echo "✅ SDK production initialisé\n";
286
- displaySecurityInfo($sunuid);
287
-
288
- } catch (Exception $e) {
289
- echo "❌ Erreur production: " . $e->getMessage() . "\n";
290
- }
291
-
292
- // ========================================
293
- // RÉSUMÉ FINAL
294
- // ========================================
295
-
296
- echo "\n🎯 RÉSUMÉ DES BONNES PRATIQUES\n";
297
- echo "===============================\n";
298
- echo "✅ Utilisez l'initialisation sécurisée (secure_init: true)\n";
299
- echo "✅ Stockez les credentials côté serveur uniquement\n";
300
- echo "✅ Activez les logs de sécurité\n";
301
- echo "✅ Validez les entrées utilisateur\n";
302
- echo "✅ Gérez les erreurs avec SunuIDException\n";
303
- echo "✅ Utilisez des variables d'environnement en production\n";
304
- echo "✅ Surveillez les logs de sécurité régulièrement\n";
305
- echo "✅ Changez régulièrement vos credentials\n";
306
- echo "✅ Testez votre implémentation avant la mise en production\n\n";
307
-
308
- echo "🔒 Votre intégration SunuID est maintenant sécurisée !\n";
309
-
@@ -1,138 +0,0 @@
1
- <?php
2
-
3
- require_once __DIR__ . '/../vendor/autoload.php';
4
-
5
- use SunuID\SunuID;
6
-
7
- // Configuration
8
- $config = [
9
- 'client_id' => '1754166754_221A57B46843D755',
10
- 'secret_id' => '56d40fe70507228b27f2640ae65894177c2fedbf246e2b30978fde1fc43953c5',
11
- 'type' => 2,
12
- 'enable_logs' => true
13
- ];
14
-
15
- $error = null;
16
- $qrData = null;
17
-
18
- try {
19
- $sunuid = new SunuID($config);
20
- $sunuid->init();
21
-
22
- // Générer un QR code
23
- $qrData = $sunuid->generateQR();
24
-
25
- } catch (Exception $e) {
26
- $error = $e->getMessage();
27
- }
28
- ?>
29
-
30
- <!DOCTYPE html>
31
- <html lang="fr">
32
- <head>
33
- <meta charset="UTF-8">
34
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
35
- <title>SunuID PHP SDK - Intégration Web</title>
36
- <style>
37
- body {
38
- font-family: Arial, sans-serif;
39
- max-width: 600px;
40
- margin: 50px auto;
41
- padding: 20px;
42
- text-align: center;
43
- }
44
-
45
- .qr-container {
46
- margin: 30px 0;
47
- padding: 20px;
48
- border: 2px dashed #ddd;
49
- border-radius: 10px;
50
- min-height: 300px;
51
- display: flex;
52
- align-items: center;
53
- justify-content: center;
54
- }
55
-
56
- .qr-container img {
57
- max-width: 250px;
58
- border: 1px solid #ddd;
59
- border-radius: 5px;
60
- }
61
-
62
- .error {
63
- background: #ffebee;
64
- color: #c62828;
65
- padding: 15px;
66
- border-radius: 5px;
67
- margin: 20px 0;
68
- }
69
-
70
- .info {
71
- background: #e3f2fd;
72
- color: #1976d2;
73
- padding: 15px;
74
- border-radius: 5px;
75
- margin: 20px 0;
76
- text-align: left;
77
- }
78
-
79
- .success {
80
- background: #e8f5e8;
81
- color: #2e7d32;
82
- padding: 15px;
83
- border-radius: 5px;
84
- margin: 20px 0;
85
- }
86
- </style>
87
- </head>
88
- <body>
89
- <h1>🔐 SunuID PHP SDK</h1>
90
- <p>Exemple d'intégration web</p>
91
-
92
- <?php if ($error): ?>
93
- <div class="error">
94
- <h3>❌ Erreur</h3>
95
- <p><?php echo htmlspecialchars($error); ?></p>
96
- </div>
97
- <?php elseif ($qrData): ?>
98
- <div class="success">
99
- <h3>✅ QR Code généré avec succès</h3>
100
- <p>Scannez le QR code avec l'application SunuID</p>
101
- </div>
102
-
103
- <div class="qr-container">
104
- <img src="<?php echo htmlspecialchars($qrData['qr_code_url']); ?>"
105
- alt="QR Code SunuID" />
106
- </div>
107
-
108
- <div class="info">
109
- <h4>📋 Informations du QR Code</h4>
110
- <ul>
111
- <li><strong>Type:</strong> <?php echo htmlspecialchars($qrData['type']); ?></li>
112
- <li><strong>Partenaire:</strong> <?php echo htmlspecialchars($qrData['partner_name']); ?></li>
113
- <li><strong>Session ID:</strong> <?php echo htmlspecialchars($qrData['session_id']); ?></li>
114
- <li><strong>Label:</strong> <?php echo htmlspecialchars($qrData['label']); ?></li>
115
- <li><strong>Contenu:</strong> <code><?php echo htmlspecialchars($qrData['content']); ?></code></li>
116
- </ul>
117
- </div>
118
-
119
- <div class="info">
120
- <h4>🔄 Vérifier le statut</h4>
121
- <p>Session ID: <code><?php echo htmlspecialchars($qrData['session_id']); ?></code></p>
122
- <p>Utilisez cette session ID pour vérifier le statut du scan.</p>
123
- </div>
124
-
125
- <?php else: ?>
126
- <div class="error">
127
- <h3>⚠️ Aucune donnée</h3>
128
- <p>Aucun QR code n'a pu être généré.</p>
129
- </div>
130
- <?php endif; ?>
131
-
132
- <div style="margin-top: 40px; padding: 20px; background: #f5f5f5; border-radius: 5px;">
133
- <h4>📚 Documentation</h4>
134
- <p>Pour plus d'informations, consultez la documentation du SDK PHP SunuID.</p>
135
- <p><strong>Version:</strong> 1.0.0</p>
136
- </div>
137
- </body>
138
- </html>