[2026-02-24 17:15:44] Tentative sans token { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:89fb:4c2c:203b:2661", "user_agent": "Odihome/1 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1771950525 } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-02-24 17:28:45] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] Body brut reçu { "length": 49, "preview": "{\"userId\":\"b1d04112-3d2a-4111-8569-6034fcd49e49\"}" } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] Body décodé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] userId validé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] getallheaders() disponible { "headers_keys": [ "Remote-Ip", "Accept-Language", "Priority", "User-Agent", "Accept-Encoding", "Content-Type", "Accept", "Content-Length", "X-Ovhrequest-Id", "X-Forwarded-Proto", "X-Forwarded-For", "X-Predictor", "Host" ] } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] Authorization header { "found": false, "preview": "VIDE" } -------------------------------------------------------------------------------- [2026-02-24 17:28:45] ERREUR: Token Bearer absent ou invalide -------------------------------------------------------------------------------- [2026-02-24 17:28:45] jsonResponse HTTP 401 { "error": "Token d'accès manquant ou invalide" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:89fb:4c2c:203b:2661", "user_agent": "Odihome/1 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1771950993 } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-02-24 17:36:33] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] Body brut reçu { "length": 985, "preview": "{\"userId\":\"b1d04112-3d2a-4111-8569-6034fcd49e49\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] Body décodé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJiMWQwNDExMi0zZDJhLTQxMTEtODU2OS02MDM0ZmNkNDllNDkiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzcxOTUyOTQyLCJpYXQiOjE3NzE5NDkzNDIsImVtYWlsIjoicmV6b3dlYnNpdGVAZ21haWwuY29tIiwicGhvbmUiOiIiLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwidXNlcl9tZXRhZGF0YSI6eyJlbWFpbCI6InJlem93ZWJzaXRlQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJzdF9uYW1lIjoiVHJlem9yIiwibGFzdF9uYW1lIjoiTWFuZyIsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiYjFkMDQxMTItM2QyYS00MTExLTg1NjktNjAzNGZjZDQ5ZTQ5In0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3NzE5NDkzNDJ9XSwic2Vzc2lvbl9pZCI6ImUzZTNmOThkLTEwZTQtNDYyYS05NzI1LTMyODhmZWUxMDUyMCIsImlzX2Fub255bW91cyI6ZmFsc2V9.jJAhMpV-pkCsPJdJPjpjYGMlbgK8yG-vnZpHcVxUQj4" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] userId validé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-02-24 17:36:33] accessToken extrait { "length": 919, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-02-24 17:36:33] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"b1d04112-3d2a-4111-8569-6034fcd49e49\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"rezowebsite@gmail.com\",\"email_confirmed_at\":\"2026-02-21T16:51:27.724389Z\",\"phone\":\"\",\"confirmed_at\":\"2026-02-21T16:51:27.724389Z\",\"last_sign_in_at\":\"2026-02-24T16:09:02.652768Z\",\"app_metadata\":{\"provid" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] Token vérifié { "token_user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49", "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] === SUPPRESSION AUTORISÉE === { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49", "email": "rezowebsite@gmail.com", "name": "Trezor Mang" } -------------------------------------------------------------------------------- [2026-02-24 17:36:33] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-02-24 17:36:33] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.b1d04112-3d2a-4111-8569-6034fcd49e49&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[{\"id\":\"865c571a-3760-4d51-8ca8-d0334ce90899\",\"stripe_subscription_id\":\"sub_1T3N32CmOXyFMbar69uStlHA\",\"plan_id\":\"agency_pro\",\"status\":\"active\",\"cancel_at_period_end\":false}]" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] Abonnement actif trouvé { "id": "865c571a-3760-4d51-8ca8-d0334ce90899", "stripe_subscription_id": "sub_1T3N32CmOXyFMbar69uStlHA", "plan_id": "agency_pro", "status": "active", "cancel_at_period_end": false } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] ÉTAPE 3: Annulation Stripe { "stripe_id": "sub_1T3N32CmOXyFMbar69uStlHA" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] curlPost → { "url": "https://webhook.odihome.app/stripe-api/cancel-subscription.php", "payload": { "subscriptionId": "sub_1T3N32CmOXyFMbar69uStlHA", "cancelAtPeriodEnd": false } } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] curlPost ← { "http_code": 500, "curl_error": null, "body_preview": " " } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] ⚠️ Échec annulation Stripe (on continue) { "code": 500, "error": "", "response": null } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] ÉTAPE 4: Envoi email suppression compte { "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-02-24 17:36:34] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] ÉTAPE 5: Suppression compte Supabase Auth { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] curlDelete → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/admin/users/b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] curlDelete ← { "http_code": 500, "curl_error": null, "body_preview": "{\"code\":500,\"error_code\":\"unexpected_failure\",\"msg\":\"Database error deleting user\",\"error_id\":\"9d3061f4303df9ba-AMS\"}" } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] ERREUR Supabase suppression { "http_code": 500, "message": "Erreur lors de la suppression du compte", "response": { "code": 500, "error_code": "unexpected_failure", "msg": "Database error deleting user", "error_id": "9d3061f4303df9ba-AMS" } } -------------------------------------------------------------------------------- [2026-02-24 17:36:34] jsonResponse HTTP 500 { "error": "Erreur lors de la suppression du compte" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:917a:49c:eda3:e058", "user_agent": "curl/8.7.1", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1771951137 } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-02-24 17:38:57] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] Body brut reçu { "length": 78, "preview": "{\"userId\":\"b1d04112-3d2a-4111-8569-6034fcd49e49\",\"accessToken\":\"test-invalid\"}" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] Body décodé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49", "accessToken": "test-invalid" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] userId validé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-02-24 17:38:57] accessToken extrait { "length": 12, "preview": "test-invalid…" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-02-24 17:38:57] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] curlGet ← { "http_code": 403, "curl_error": null, "body_preview": "{\"code\":403,\"error_code\":\"bad_jwt\",\"msg\":\"invalid JWT: unable to parse or verify signature, token is malformed: token contains an invalid number of segments\"}" } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] ERREUR: Token invalide ou expiré { "http_code": 403, "response": { "code": 403, "error_code": "bad_jwt", "msg": "invalid JWT: unable to parse or verify signature, token is malformed: token contains an invalid number of segments" } } -------------------------------------------------------------------------------- [2026-02-24 17:38:57] jsonResponse HTTP 401 { "error": "Token d'accès invalide ou expiré (HTTP 403)" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "62.235.242.124", "user_agent": "Odihome/1 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1771955607 } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-02-24 18:53:27] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] Body brut reçu { "length": 985, "preview": "{\"userId\":\"b1d04112-3d2a-4111-8569-6034fcd49e49\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] Body décodé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJiMWQwNDExMi0zZDJhLTQxMTEtODU2OS02MDM0ZmNkNDllNDkiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzcxOTU4NjkwLCJpYXQiOjE3NzE5NTUwOTAsImVtYWlsIjoicmV6b3dlYnNpdGVAZ21haWwuY29tIiwicGhvbmUiOiIiLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwidXNlcl9tZXRhZGF0YSI6eyJlbWFpbCI6InJlem93ZWJzaXRlQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJzdF9uYW1lIjoiVHJlem9yIiwibGFzdF9uYW1lIjoiTWFuZyIsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiYjFkMDQxMTItM2QyYS00MTExLTg1NjktNjAzNGZjZDQ5ZTQ5In0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3NzE5NDkzNDJ9XSwic2Vzc2lvbl9pZCI6ImUzZTNmOThkLTEwZTQtNDYyYS05NzI1LTMyODhmZWUxMDUyMCIsImlzX2Fub255bW91cyI6ZmFsc2V9.b0XKcPTxieiKSqfAadXxqeJbQSd3z6vjiK-ydbhGxSc" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] userId validé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-02-24 18:53:27] accessToken extrait { "length": 919, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-02-24 18:53:27] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"b1d04112-3d2a-4111-8569-6034fcd49e49\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"rezowebsite@gmail.com\",\"email_confirmed_at\":\"2026-02-21T16:51:27.724389Z\",\"phone\":\"\",\"confirmed_at\":\"2026-02-21T16:51:27.724389Z\",\"last_sign_in_at\":\"2026-02-24T16:09:02.652768Z\",\"app_metadata\":{\"provid" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] Token vérifié { "token_user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49", "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] === SUPPRESSION AUTORISÉE === { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49", "email": "rezowebsite@gmail.com", "name": "Trezor Mang" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-02-24 18:53:27] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.b1d04112-3d2a-4111-8569-6034fcd49e49&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[{\"id\":\"865c571a-3760-4d51-8ca8-d0334ce90899\",\"stripe_subscription_id\":\"sub_1T3N32CmOXyFMbar69uStlHA\",\"plan_id\":\"agency_pro\",\"status\":\"active\",\"cancel_at_period_end\":false}]" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] Abonnement actif trouvé { "id": "865c571a-3760-4d51-8ca8-d0334ce90899", "stripe_subscription_id": "sub_1T3N32CmOXyFMbar69uStlHA", "plan_id": "agency_pro", "status": "active", "cancel_at_period_end": false } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] ÉTAPE 3: Annulation Stripe directe { "stripe_id": "sub_1T3N32CmOXyFMbar69uStlHA" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] Chemin .env Stripe { "path": "/home/odihomi/webhook/auth/../stripe-api/config/.env", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-02-24 18:53:27] STRIPE_SECRET_KEY { "found": true, "preview": "sk_live_51…" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] Stripe API ← { "http_code": 200, "curl_error": null, "status": "canceled", "body_preview": "{\n \"id\": \"sub_1T3N32CmOXyFMbar69uStlHA\",\n \"object\": \"subscription\",\n \"application\": null,\n \"application_fee_percent\": null,\n \"automatic_tax\": {\n \"disabled_reason\": null,\n \"enabled\": false,\n \"liability\": null\n },\n \"billing_cycle_anchor\": 1771706673,\n \"billing_cycle_anchor_config\": nu" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] ✅ Stripe annulé immédiatement { "stripe_id": "sub_1T3N32CmOXyFMbar69uStlHA", "status": "canceled" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] ÉTAPE 4: Envoi email suppression compte { "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-02-24 18:53:28] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/storage/v1/object/list/immovision-images", "payload": { "prefix": "b1d04112-3d2a-4111-8569-6034fcd49e49/", "limit": 1000, "offset": 0, "sortBy": { "column": "name", "order": "asc" } } } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] curlPost ← { "http_code": 200, "curl_error": null, "body_preview": "[{\"name\":\"journal_entries\",\"id\":null,\"updated_at\":null,\"created_at\":null,\"last_accessed_at\":null,\"metadata\":null},{\"name\":\"keys\",\"id\":null,\"updated_at\":null,\"created_at\":null,\"last_accessed_at\":null,\"metadata\":null},{\"name\":\"meters\",\"id\":null,\"updated_at\":null,\"created_at\":null,\"last_accessed_at\":nu" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] Fichiers Storage trouvés { "count": 6, "paths_preview": [ "b1d04112-3d2a-4111-8569-6034fcd49e49/journal_entries", "b1d04112-3d2a-4111-8569-6034fcd49e49/keys", "b1d04112-3d2a-4111-8569-6034fcd49e49/meters", "b1d04112-3d2a-4111-8569-6034fcd49e49/PDF", "b1d04112-3d2a-4111-8569-6034fcd49e49/property_journals" ] } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] Suppression Storage ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] ✅ Fichiers Storage supprimés { "count": 6 } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] ÉTAPE 6: Suppression compte Supabase Auth { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 18:53:28] curlDelete → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/admin/users/b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 18:53:29] curlDelete ← { "http_code": 500, "curl_error": null, "body_preview": "{\"code\":500,\"error_code\":\"unexpected_failure\",\"msg\":\"Database error deleting user\",\"error_id\":\"9d30d29c305efb9c-AMS\"}" } -------------------------------------------------------------------------------- [2026-02-24 18:53:29] ERREUR Supabase suppression { "http_code": 500, "message": "Erreur suppression (HTTP 500)", "response": { "code": 500, "error_code": "unexpected_failure", "msg": "Database error deleting user", "error_id": "9d30d29c305efb9c-AMS" } } -------------------------------------------------------------------------------- [2026-02-24 18:53:29] jsonResponse HTTP 500 { "error": "Erreur suppression (HTTP 500)", "debug_code": 500, "debug_resp": { "code": 500, "error_code": "unexpected_failure", "msg": "Database error deleting user", "error_id": "9d30d29c305efb9c-AMS" } } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:89fb:4c2c:203b:2661", "user_agent": "Odihome/1 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1771957104 } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-02-24 19:18:24] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] Body brut reçu { "length": 985, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJiMWQwNDExMi0zZDJhLTQxMTEtO" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJiMWQwNDExMi0zZDJhLTQxMTEtODU2OS02MDM0ZmNkNDllNDkiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzcxOTU4NjkwLCJpYXQiOjE3NzE5NTUwOTAsImVtYWlsIjoicmV6b3dlYnNpdGVAZ21haWwuY29tIiwicGhvbmUiOiIiLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwidXNlcl9tZXRhZGF0YSI6eyJlbWFpbCI6InJlem93ZWJzaXRlQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJmaXJzdF9uYW1lIjoiVHJlem9yIiwibGFzdF9uYW1lIjoiTWFuZyIsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiYjFkMDQxMTItM2QyYS00MTExLTg1NjktNjAzNGZjZDQ5ZTQ5In0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3NzE5NDkzNDJ9XSwic2Vzc2lvbl9pZCI6ImUzZTNmOThkLTEwZTQtNDYyYS05NzI1LTMyODhmZWUxMDUyMCIsImlzX2Fub255bW91cyI6ZmFsc2V9.b0XKcPTxieiKSqfAadXxqeJbQSd3z6vjiK-ydbhGxSc", "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] userId validé { "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-02-24 19:18:24] accessToken extrait { "length": 919, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-02-24 19:18:24] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"b1d04112-3d2a-4111-8569-6034fcd49e49\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"rezowebsite@gmail.com\",\"email_confirmed_at\":\"2026-02-21T16:51:27.724389Z\",\"phone\":\"\",\"confirmed_at\":\"2026-02-21T16:51:27.724389Z\",\"last_sign_in_at\":\"2026-02-24T16:09:02.652768Z\",\"app_metadata\":{\"provid" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] Token vérifié { "token_user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49", "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] === SUPPRESSION AUTORISÉE === { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49", "email": "rezowebsite@gmail.com", "name": "Trezor Mang" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-02-24 19:18:24] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.b1d04112-3d2a-4111-8569-6034fcd49e49&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-02-24 19:18:24] ÉTAPE 4: Envoi email suppression compte { "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-02-24 19:18:24] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 19:18:24] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/storage/v1/object/list/immovision-images", "payload": { "prefix": "b1d04112-3d2a-4111-8569-6034fcd49e49/", "limit": 1000, "offset": 0, "sortBy": { "column": "name", "order": "asc" } } } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] curlPost ← { "http_code": 200, "curl_error": null, "body_preview": "[{\"name\":\"journal_entries\",\"id\":null,\"updated_at\":null,\"created_at\":null,\"last_accessed_at\":null,\"metadata\":null},{\"name\":\"keys\",\"id\":null,\"updated_at\":null,\"created_at\":null,\"last_accessed_at\":null,\"metadata\":null},{\"name\":\"meters\",\"id\":null,\"updated_at\":null,\"created_at\":null,\"last_accessed_at\":nu" } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] Fichiers Storage trouvés { "count": 6, "paths_preview": [ "b1d04112-3d2a-4111-8569-6034fcd49e49/journal_entries", "b1d04112-3d2a-4111-8569-6034fcd49e49/keys", "b1d04112-3d2a-4111-8569-6034fcd49e49/meters", "b1d04112-3d2a-4111-8569-6034fcd49e49/PDF", "b1d04112-3d2a-4111-8569-6034fcd49e49/property_journals" ] } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] Suppression Storage ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] ✅ Fichiers Storage supprimés { "count": 6 } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49" } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49" } } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "b1d04112-3d2a-4111-8569-6034fcd49e49", "email": "rezowebsite@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-02-24 19:18:25] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "b1d04112-3d2a-4111-8569-6034fcd49e49", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "62.235.242.124", "user_agent": "Odihome/1 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1771962193 } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-02-24 20:43:13] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] Body brut reçu { "length": 988, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJkZWE3YzkwMi1mZTZlLTQyN2ItY" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJkZWE3YzkwMi1mZTZlLTQyN2ItYjdmYi0xNmFkYWEwNTkxNmIiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzcxOTY1MjgxLCJpYXQiOjE3NzE5NjE2ODEsImVtYWlsIjoidGVjaG5vaW1tbzA5QGdtYWlsLmNvbSIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJ0ZWNobm9pbW1vMDlAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImZpcnN0X25hbWUiOiJBbGV4aXMiLCJsYXN0X25hbWUiOiJNaXp1IiwicGhvbmVfdmVyaWZpZWQiOmZhbHNlLCJzdWIiOiJkZWE3YzkwMi1mZTZlLTQyN2ItYjdmYi0xNmFkYWEwNTkxNmIifSwicm9sZSI6ImF1dGhlbnRpY2F0ZWQiLCJhYWwiOiJhYWwxIiwiYW1yIjpbeyJtZXRob2QiOiJwYXNzd29yZCIsInRpbWVzdGFtcCI6MTc3MTk2MTY4MX1dLCJzZXNzaW9uX2lkIjoiZjNmNGVhNTEtNzdmOS00Njc2LWJhZGMtYjM3ODEwNzgxZDYzIiwiaXNfYW5vbnltb3VzIjpmYWxzZX0.93JL3yWNSIki66nncM89mH7r2QTLvKpiw0C2RMP7DsM", "userId": "dea7c902-fe6e-427b-b7fb-16adaa05916b" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] userId validé { "userId": "dea7c902-fe6e-427b-b7fb-16adaa05916b" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-02-24 20:43:13] accessToken extrait { "length": 922, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-02-24 20:43:13] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"dea7c902-fe6e-427b-b7fb-16adaa05916b\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"technoimmo09@gmail.com\",\"email_confirmed_at\":\"2026-01-11T15:10:43.994852Z\",\"phone\":\"\",\"confirmed_at\":\"2026-01-11T15:10:43.994852Z\",\"last_sign_in_at\":\"2026-02-24T19:34:41.238798Z\",\"app_metadata\":{\"provi" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] Token vérifié { "token_user_id": "dea7c902-fe6e-427b-b7fb-16adaa05916b", "email": "technoimmo09@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] === SUPPRESSION AUTORISÉE === { "user_id": "dea7c902-fe6e-427b-b7fb-16adaa05916b", "email": "technoimmo09@gmail.com", "name": "Alexis Mizu" } -------------------------------------------------------------------------------- [2026-02-24 20:43:13] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-02-24 20:43:13] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.dea7c902-fe6e-427b-b7fb-16adaa05916b&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[{\"id\":\"4512bc5e-13a0-47e8-8194-8736934b90b8\",\"stripe_subscription_id\":\"sub_1SoQM7CmOXyFMbarbZIWZs5H\",\"plan_id\":\"agency_starter\",\"status\":\"active\",\"cancel_at_period_end\":false}]" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] Abonnement actif trouvé { "id": "4512bc5e-13a0-47e8-8194-8736934b90b8", "stripe_subscription_id": "sub_1SoQM7CmOXyFMbarbZIWZs5H", "plan_id": "agency_starter", "status": "active", "cancel_at_period_end": false } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] ÉTAPE 3: Annulation Stripe directe { "stripe_id": "sub_1SoQM7CmOXyFMbarbZIWZs5H" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] Chemin .env Stripe { "path": "/home/odihomi/webhook/auth/../stripe-api/config/.env", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] STRIPE_SECRET_KEY { "found": true, "preview": "sk_live_51…" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] Stripe API ← { "http_code": 200, "curl_error": null, "status": "canceled", "body_preview": "{\n \"id\": \"sub_1SoQM7CmOXyFMbarbZIWZs5H\",\n \"object\": \"subscription\",\n \"application\": null,\n \"application_fee_percent\": null,\n \"automatic_tax\": {\n \"disabled_reason\": null,\n \"enabled\": false,\n \"liability\": null\n },\n \"billing_cycle_anchor\": 1768156529,\n \"billing_cycle_anchor_config\": nu" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] ✅ Stripe annulé immédiatement { "stripe_id": "sub_1SoQM7CmOXyFMbarbZIWZs5H", "status": "canceled" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] ÉTAPE 4: Envoi email suppression compte { "email": "technoimmo09@gmail.com" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-02-24 20:43:14] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-02-24 20:43:14] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "dea7c902-fe6e-427b-b7fb-16adaa05916b" } -------------------------------------------------------------------------------- [2026-02-24 20:43:15] Fichiers Storage trouvés { "count": 12, "prefix_used": "DEA7C902-FE6E-427B-B7FB-16ADAA05916B/", "files_preview": [ "DEA7C902-FE6E-427B-B7FB-16ADAA05916B/journal_entries/5A8DAFF4-3674-41C2-BF6E-D160CDDA0F34-08819B9D-E33C-4D3D-8258-B6C4932FFBFF.jpg", "DEA7C902-FE6E-427B-B7FB-16ADAA05916B/journal_entries/5A8DAFF4-3674-41C2-BF6E-D160CDDA0F34-2DDAB393-E618-4EC6-AE4A-089F5E5A1914.jpg", "DEA7C902-FE6E-427B-B7FB-16ADAA05916B/journal_entries/5A8DAFF4-3674-41C2-BF6E-D160CDDA0F34-E1132E63-39E2-4BCC-A4DE-191DDF158054.jpg", "DEA7C902-FE6E-427B-B7FB-16ADAA05916B/keys/A1A985AF-A013-4780-A1A9-EE3DAD91707C-9C9A720C-0864-473C-BD74-1C412CA1C1CA.jpg", "DEA7C902-FE6E-427B-B7FB-16ADAA05916B/keys/A1A985AF-A013-4780-A1A9-EE3DAD91707C-D2E619F5-5623-42D6-A61F-B937811B2D99.jpg" ] } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] Lot supprimé { "http_code": 200, "in_lot": 12, "deleted": 12 } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] ✅ Storage nettoyé { "supprimés": 12, "trouvés": 12 } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "dea7c902-fe6e-427b-b7fb-16adaa05916b" } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "dea7c902-fe6e-427b-b7fb-16adaa05916b" } } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "dea7c902-fe6e-427b-b7fb-16adaa05916b", "email": "technoimmo09@gmail.com", "subscription_cancelled": true, "http_code": 204 } -------------------------------------------------------------------------------- [2026-02-24 20:43:16] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "dea7c902-fe6e-427b-b7fb-16adaa05916b", "subscriptionCancelled": true } -------------------------------------------------------------------------------- [2026-03-03 10:29:22] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:1588:ccd4:ea96:bb49", "user_agent": "Odihome/3 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1772530162 } -------------------------------------------------------------------------------- [2026-03-03 10:29:22] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-03-03 10:29:22] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-03-03 10:29:22] Body brut reçu { "length": 917, "preview": "{\"userId\":\"77dead06-f402-4dd6-b316-536b8af62033\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-03-03 10:29:22] Body décodé { "userId": "77dead06-f402-4dd6-b316-536b8af62033", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI3N2RlYWQwNi1mNDAyLTRkZDYtYjMxNi01MzZiOGFmNjIwMzMiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzcyNTMzNzQxLCJpYXQiOjE3NzI1MzAxNDEsImVtYWlsIjoiaW5mb0BvZGlob21lLmFwcCIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJpbmZvQG9kaWhvbWUuYXBwIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiNzdkZWFkMDYtZjQwMi00ZGQ2LWIzMTYtNTM2YjhhZjYyMDMzIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3NzI1MzAxNDF9XSwic2Vzc2lvbl9pZCI6ImFhOWYyZDNkLTRiYTMtNDIzYS1iOGRhLTk3ZjNmNDQyMTdkOCIsImlzX2Fub255bW91cyI6ZmFsc2V9.fJBlYvbEopMxQhyuHoGkprldiiDE4Id_j0m-PSRCwA4" } -------------------------------------------------------------------------------- [2026-03-03 10:29:22] userId validé { "userId": "77dead06-f402-4dd6-b316-536b8af62033" } -------------------------------------------------------------------------------- [2026-03-03 10:29:22] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-03-03 10:29:22] accessToken extrait { "length": 851, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-03-03 10:29:22] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-03-03 10:29:22] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"77dead06-f402-4dd6-b316-536b8af62033\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"info@odihome.app\",\"email_confirmed_at\":\"2026-02-10T09:28:50.618835Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-02-10T09:25:44.878473Z\",\"confirmed_at\":\"2026-02-10T09:28:50.618835Z\",\"last_sign_in_at\":\"2026" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] Token vérifié { "token_user_id": "77dead06-f402-4dd6-b316-536b8af62033", "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] === SUPPRESSION AUTORISÉE === { "user_id": "77dead06-f402-4dd6-b316-536b8af62033", "email": "info@odihome.app", "name": "info" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-03-03 10:29:23] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.77dead06-f402-4dd6-b316-536b8af62033&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-03-03 10:29:23] ÉTAPE 4: Envoi email suppression compte { "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-03-03 10:29:23] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "77dead06-f402-4dd6-b316-536b8af62033" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] Fichiers Storage trouvés { "count": 10, "prefix_used": "77DEAD06-F402-4DD6-B316-536B8AF62033/", "files_preview": [ "77DEAD06-F402-4DD6-B316-536B8AF62033/info_add/image-231BC06D.jpg", "77DEAD06-F402-4DD6-B316-536B8AF62033/info_add/image-4645E763.jpg", "77DEAD06-F402-4DD6-B316-536B8AF62033/info_add/image-60D8B029.jpg", "77DEAD06-F402-4DD6-B316-536B8AF62033/info_add/image-6C7E5C4E.jpg", "77DEAD06-F402-4DD6-B316-536B8AF62033/info_add/image-CC4F2448.jpg" ] } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] Lot supprimé { "http_code": 200, "in_lot": 10, "deleted": 10 } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] ✅ Storage nettoyé { "supprimés": 10, "trouvés": 10 } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "77dead06-f402-4dd6-b316-536b8af62033" } -------------------------------------------------------------------------------- [2026-03-03 10:29:23] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "77dead06-f402-4dd6-b316-536b8af62033" } } -------------------------------------------------------------------------------- [2026-03-03 10:29:24] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-03-03 10:29:24] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-03-03 10:29:24] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "77dead06-f402-4dd6-b316-536b8af62033", "email": "info@odihome.app", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-03-03 10:29:24] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "77dead06-f402-4dd6-b316-536b8af62033", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:1588:ccd4:ea96:bb49", "user_agent": "Odihome/3 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1772636948 } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-03-04 16:09:08] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Body brut reçu { "length": 917, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIwZmMzOWI0MC0yNDcyLTQzNGQtO" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIwZmMzOWI0MC0yNDcyLTQzNGQtOTA3MS0xMjg1YzBjYjkwZGYiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzcyNjM4ODk5LCJpYXQiOjE3NzI2MzUyOTksImVtYWlsIjoiaW5mb0BvZGlob21lLmFwcCIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJpbmZvQG9kaWhvbWUuYXBwIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMGZjMzliNDAtMjQ3Mi00MzRkLTkwNzEtMTI4NWMwY2I5MGRmIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3NzI2MzUyOTl9XSwic2Vzc2lvbl9pZCI6ImI3MTFlMGNmLTU2ZTItNDEyNC1iNDEyLThmMWEyMDRiMmIxYyIsImlzX2Fub255bW91cyI6ZmFsc2V9.9uTnjmZlf8NymPhfnNQuiYtfAbX6C-ETv00FBVwGv1I", "userId": "0fc39b40-2472-434d-9071-1285c0cb90df" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] userId validé { "userId": "0fc39b40-2472-434d-9071-1285c0cb90df" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-03-04 16:09:08] accessToken extrait { "length": 851, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-03-04 16:09:08] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"0fc39b40-2472-434d-9071-1285c0cb90df\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"info@odihome.app\",\"email_confirmed_at\":\"2026-03-04T14:41:19.907816Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-03-04T14:21:32.977382Z\",\"confirmed_at\":\"2026-03-04T14:41:19.907816Z\",\"last_sign_in_at\":\"2026" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Token vérifié { "token_user_id": "0fc39b40-2472-434d-9071-1285c0cb90df", "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] === SUPPRESSION AUTORISÉE === { "user_id": "0fc39b40-2472-434d-9071-1285c0cb90df", "email": "info@odihome.app", "name": "info" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-03-04 16:09:08] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.0fc39b40-2472-434d-9071-1285c0cb90df&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-03-04 16:09:08] ÉTAPE 4: Envoi email suppression compte { "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "0fc39b40-2472-434d-9071-1285c0cb90df" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Fichiers Storage trouvés { "count": 0, "prefix_used": "0FC39B40-2472-434D-9071-1285C0CB90DF/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-03-04 16:09:08] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "0fc39b40-2472-434d-9071-1285c0cb90df" } -------------------------------------------------------------------------------- [2026-03-04 16:09:08] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "0fc39b40-2472-434d-9071-1285c0cb90df" } } -------------------------------------------------------------------------------- [2026-03-04 16:09:09] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-03-04 16:09:09] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-03-04 16:09:09] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "0fc39b40-2472-434d-9071-1285c0cb90df", "email": "info@odihome.app", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-03-04 16:09:09] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "0fc39b40-2472-434d-9071-1285c0cb90df", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:c00f:bade:a7ed:948b", "user_agent": "Odihome/3 CFNetwork/3860.300.31 Darwin/25.2.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1772789157 } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-03-06 10:25:57] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Body brut reçu { "length": 917, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJlMDJmNTNkYi04YWVjLTQ0NDktO" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJlMDJmNTNkYi04YWVjLTQ0NDktOThkMS0wZGYwYmExZGIzNWIiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzcyNzkyNzQ4LCJpYXQiOjE3NzI3ODkxNDgsImVtYWlsIjoiaW5mb0BvZGlob21lLmFwcCIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJpbmZvQG9kaWhvbWUuYXBwIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiZTAyZjUzZGItOGFlYy00NDQ5LTk4ZDEtMGRmMGJhMWRiMzViIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3NzI3MTUxMjR9XSwic2Vzc2lvbl9pZCI6IjUwMzdmM2IyLTA5NGYtNGI1NC05N2YzLWYxYjM0NjYyYWRlOCIsImlzX2Fub255bW91cyI6ZmFsc2V9.PBJvDYwm7VRsAU1Lz0WHeZs_TizNq_0xuIGaSD2Eons", "userId": "e02f53db-8aec-4449-98d1-0df0ba1db35b" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] userId validé { "userId": "e02f53db-8aec-4449-98d1-0df0ba1db35b" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-03-06 10:25:57] accessToken extrait { "length": 851, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-03-06 10:25:57] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"e02f53db-8aec-4449-98d1-0df0ba1db35b\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"info@odihome.app\",\"email_confirmed_at\":\"2026-03-05T07:06:48.89507Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-03-04T20:05:00.548102Z\",\"confirmed_at\":\"2026-03-05T07:06:48.89507Z\",\"last_sign_in_at\":\"2026-0" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Token vérifié { "token_user_id": "e02f53db-8aec-4449-98d1-0df0ba1db35b", "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] === SUPPRESSION AUTORISÉE === { "user_id": "e02f53db-8aec-4449-98d1-0df0ba1db35b", "email": "info@odihome.app", "name": "info" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-03-06 10:25:57] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.e02f53db-8aec-4449-98d1-0df0ba1db35b&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ÉTAPE 4: Envoi email suppression compte { "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "e02f53db-8aec-4449-98d1-0df0ba1db35b" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Fichiers Storage trouvés { "count": 0, "prefix_used": "E02F53DB-8AEC-4449-98D1-0DF0BA1DB35B/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "e02f53db-8aec-4449-98d1-0df0ba1db35b" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "e02f53db-8aec-4449-98d1-0df0ba1db35b" } } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "e02f53db-8aec-4449-98d1-0df0ba1db35b", "email": "info@odihome.app", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-03-06 10:25:57] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "e02f53db-8aec-4449-98d1-0df0ba1db35b", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-03-29 19:26:32] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.17", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1774805192 } -------------------------------------------------------------------------------- [2026-03-29 19:26:32] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-03-30 02:31:57] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "85.208.96.212", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1774830717 } -------------------------------------------------------------------------------- [2026-03-30 02:31:57] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-04-13 23:48:35] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "103.4.251.116", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1776116915 } -------------------------------------------------------------------------------- [2026-04-13 23:48:35] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-04-14 05:23:21] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "104.252.191.21", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1776137001 } -------------------------------------------------------------------------------- [2026-04-14 05:23:21] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-04-19 08:42:15] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "104.37.27.164", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 14.2; rv:109.0) Gecko/20100101 Firefox/121.0", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1776580935 } -------------------------------------------------------------------------------- [2026-04-19 08:42:15] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-04-29 09:10:06] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "85.208.96.199", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1777446606 } -------------------------------------------------------------------------------- [2026-04-29 09:10:06] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-04-29 14:26:37] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "85.208.96.196", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1777465597 } -------------------------------------------------------------------------------- [2026-04-29 14:26:37] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-04-30 23:12:38] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a02:4780:5e:ee63::1", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1777583558 } -------------------------------------------------------------------------------- [2026-04-30 23:12:38] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-01 07:59:29] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a02:4780:f:98bf::1", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1777615169 } -------------------------------------------------------------------------------- [2026-05-01 07:59:29] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-07 07:58:52] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2602:fb54:1400::2f", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1778133532 } -------------------------------------------------------------------------------- [2026-05-07 07:58:52] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "37.167.11.223", "user_agent": "Odihome/3 CFNetwork/3860.400.51 Darwin/25.3.0", "content_type": "application/json", "php_version": "8.2.29", "timestamp": 1778146792 } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-05-07 11:39:52] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Body brut reçu { "length": 936, "preview": "{\"userId\":\"67166e42-e945-486f-8275-6c7697ad0411\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Body décodé { "userId": "67166e42-e945-486f-8275-6c7697ad0411", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI2NzE2NmU0Mi1lOTQ1LTQ4NmYtODI3NS02Yzc2OTdhZDA0MTEiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzc4MjMzMDcxLCJpYXQiOjE3NzgxNDY2NzEsImVtYWlsIjoiY29uc3RhdHNlcnY2NEBnbWFpbC5jb20iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoiY29uc3RhdHNlcnY2NEBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwicGhvbmVfdmVyaWZpZWQiOmZhbHNlLCJzdWIiOiI2NzE2NmU0Mi1lOTQ1LTQ4NmYtODI3NS02Yzc2OTdhZDA0MTEifSwicm9sZSI6ImF1dGhlbnRpY2F0ZWQiLCJhYWwiOiJhYWwxIiwiYW1yIjpbeyJtZXRob2QiOiJwYXNzd29yZCIsInRpbWVzdGFtcCI6MTc3ODE0NjY3MX1dLCJzZXNzaW9uX2lkIjoiOWY4ZjQwMmEtZjJkMy00MWRkLWJiNjktOGQ4YWM1ZjU5N2YzIiwiaXNfYW5vbnltb3VzIjpmYWxzZX0.DuACIuKepVFqCcCuG2wi9l3DLwHqQdT08350dkFe9Sw" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] userId validé { "userId": "67166e42-e945-486f-8275-6c7697ad0411" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-05-07 11:39:52] accessToken extrait { "length": 870, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-05-07 11:39:52] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"67166e42-e945-486f-8275-6c7697ad0411\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"constatserv64@gmail.com\",\"email_confirmed_at\":\"2026-05-07T09:36:22.887011Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-05-07T09:36:03.458307Z\",\"confirmed_at\":\"2026-05-07T09:36:22.887011Z\",\"last_sign_in_at" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Token vérifié { "token_user_id": "67166e42-e945-486f-8275-6c7697ad0411", "email": "constatserv64@gmail.com" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] === SUPPRESSION AUTORISÉE === { "user_id": "67166e42-e945-486f-8275-6c7697ad0411", "email": "constatserv64@gmail.com", "name": "constatserv64" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-05-07 11:39:52] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.67166e42-e945-486f-8275-6c7697ad0411&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-05-07 11:39:52] ÉTAPE 4: Envoi email suppression compte { "email": "constatserv64@gmail.com" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "67166e42-e945-486f-8275-6c7697ad0411" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Fichiers Storage trouvés { "count": 0, "prefix_used": "67166E42-E945-486F-8275-6C7697AD0411/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-05-07 11:39:52] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "67166e42-e945-486f-8275-6c7697ad0411" } -------------------------------------------------------------------------------- [2026-05-07 11:39:52] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "67166e42-e945-486f-8275-6c7697ad0411" } } -------------------------------------------------------------------------------- [2026-05-07 11:39:53] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-05-07 11:39:53] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-05-07 11:39:53] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "67166e42-e945-486f-8275-6c7697ad0411", "email": "constatserv64@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-05-07 11:39:53] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "67166e42-e945-486f-8275-6c7697ad0411", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-05-18 21:05:57] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a02:4780:10:4bc9::1", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1779131157 } -------------------------------------------------------------------------------- [2026-05-18 21:05:57] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-18 23:16:29] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a02:4780:75:d99e::1", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1779138989 } -------------------------------------------------------------------------------- [2026-05-18 23:16:29] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-28 05:42:45] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.1", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1779939765 } -------------------------------------------------------------------------------- [2026-05-28 05:42:45] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-28 12:10:52] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.19", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1779963052 } -------------------------------------------------------------------------------- [2026-05-28 12:10:52] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-30 20:03:50] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "207.241.173.215", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1780164230 } -------------------------------------------------------------------------------- [2026-05-30 20:03:50] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-05-30 20:07:27] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "207.241.173.215", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/147.0.0.0", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1780164447 } -------------------------------------------------------------------------------- [2026-05-30 20:07:27] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-04 01:20:07] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2602:fb54:97e::", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1780528807 } -------------------------------------------------------------------------------- [2026-06-04 01:20:07] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-06 02:34:11] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "216.73.216.168", "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1780706051 } -------------------------------------------------------------------------------- [2026-06-06 02:34:11] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-11 18:33:52] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2602:fb54:1a00::94", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1781195632 } -------------------------------------------------------------------------------- [2026-06-11 18:33:52] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-21 09:43:43] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "93.123.109.101", "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782027823 } -------------------------------------------------------------------------------- [2026-06-21 09:43:43] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-23 14:35:56] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "148.113.205.188", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782218156 } -------------------------------------------------------------------------------- [2026-06-23 14:35:56] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-23 14:51:34] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "65.21.124.77", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782219094 } -------------------------------------------------------------------------------- [2026-06-23 14:51:34] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-23 16:03:45] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "148.113.205.188", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782223425 } -------------------------------------------------------------------------------- [2026-06-23 16:03:45] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-26 19:22:12] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.16", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782494532 } -------------------------------------------------------------------------------- [2026-06-26 19:22:12] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-26 19:33:45] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "85.208.96.198", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782495225 } -------------------------------------------------------------------------------- [2026-06-26 19:33:45] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-30 00:46:16] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a0e:97c0:3e3:c65::1", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782773176 } -------------------------------------------------------------------------------- [2026-06-30 00:46:16] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-06-30 12:21:52] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "91.192.10.179", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1782814912 } -------------------------------------------------------------------------------- [2026-06-30 12:21:52] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-07 21:54:39] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "162.141.167.14", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1783454079 } -------------------------------------------------------------------------------- [2026-07-07 21:54:39] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-08 11:19:09] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "104.244.78.33", "user_agent": "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1783502349 } -------------------------------------------------------------------------------- [2026-07-08 11:19:09] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-08 23:35:13] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "82.39.212.235", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1783546513 } -------------------------------------------------------------------------------- [2026-07-08 23:35:13] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-09 01:19:21] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a0e:97c0:3e3:c44::1", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1783552761 } -------------------------------------------------------------------------------- [2026-07-09 01:19:21] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-09 07:18:38] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "38.43.93.182", "user_agent": "Mozilla/5.0 (compatible; Applebot/0.1; +http://www.apple.com/go/applebot)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1783574318 } -------------------------------------------------------------------------------- [2026-07-09 07:18:38] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-09 10:01:30] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.93.89.147", "user_agent": "Mozilla/5.0 (compatible; jscrawler/0.1; +https://github.com/)", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1783584090 } -------------------------------------------------------------------------------- [2026-07-09 10:01:30] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-14 13:47:27] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "148.113.205.188", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1784029647 } -------------------------------------------------------------------------------- [2026-07-14 13:47:27] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-14 13:48:56] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "65.21.124.77", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.29", "timestamp": 1784029736 } -------------------------------------------------------------------------------- [2026-07-14 13:48:56] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-16 18:51:02] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a04:c300:400::89", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1784220662 } -------------------------------------------------------------------------------- [2026-07-16 18:51:02] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-21 11:19:10] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "46.37.124.20", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1784625550 } -------------------------------------------------------------------------------- [2026-07-21 11:19:10] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-21 17:22:09] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "91.192.10.101", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1784647329 } -------------------------------------------------------------------------------- [2026-07-21 17:22:09] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-24 19:55:48] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "85.208.96.205", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1784915748 } -------------------------------------------------------------------------------- [2026-07-24 19:55:48] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-25 01:05:25] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "85.208.96.195", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1784934325 } -------------------------------------------------------------------------------- [2026-07-25 01:05:25] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-28 12:08:45] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a04:c300:400::5e", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1785233325 } -------------------------------------------------------------------------------- [2026-07-28 12:08:45] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-07-29 12:31:54] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "172.121.222.22", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/121.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1785321114 } -------------------------------------------------------------------------------- [2026-07-29 12:31:54] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-04 19:07:02] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.213.174.98", "user_agent": "Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://perplexity.ai/perplexitybot)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1785863222 } -------------------------------------------------------------------------------- [2026-08-04 19:07:02] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-04 23:48:57] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.213.174.98", "user_agent": "CCBot/2.0 (https://commoncrawl.org/faq/)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1785880137 } -------------------------------------------------------------------------------- [2026-08-04 23:48:57] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-13 13:08:40] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a04:c300:400::6f", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1786619320 } -------------------------------------------------------------------------------- [2026-08-13 13:08:40] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-16 23:22:44] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.93.89.147", "user_agent": "Mozilla/5.0 (compatible; jscrawler/0.1; +https://github.com/)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1786915364 } -------------------------------------------------------------------------------- [2026-08-16 23:22:44] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-21 14:55:57] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.17", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1787316957 } -------------------------------------------------------------------------------- [2026-08-21 14:55:57] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-21 22:35:19] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.4", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1787344519 } -------------------------------------------------------------------------------- [2026-08-21 22:35:19] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-24 09:53:04] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "2a0f:ca80:b00b:3141::5", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/114.0.5735.110 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1787557984 } -------------------------------------------------------------------------------- [2026-08-24 09:53:04] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-25 03:44:30] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.93.89.147", "user_agent": "Mozilla/5.0 (compatible; jscrawler/0.1; +https://github.com/)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1787622270 } -------------------------------------------------------------------------------- [2026-08-25 03:44:30] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-28 05:58:51] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "158.69.117.45", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1787889531 } -------------------------------------------------------------------------------- [2026-08-28 05:58:51] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-08-30 08:42:21] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "146.190.120.98", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788072141 } -------------------------------------------------------------------------------- [2026-08-30 08:42:21] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-01 11:11:04] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "146.190.118.249", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788253864 } -------------------------------------------------------------------------------- [2026-09-01 11:11:04] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-03 07:58:31] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "158.69.55.148", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788415111 } -------------------------------------------------------------------------------- [2026-09-03 07:58:31] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-03 09:04:30] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "158.69.117.45", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788419070 } -------------------------------------------------------------------------------- [2026-09-03 09:04:30] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-03 09:13:21] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "103.4.250.60", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788419601 } -------------------------------------------------------------------------------- [2026-09-03 09:13:21] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-03 09:17:47] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "158.69.55.82", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788419867 } -------------------------------------------------------------------------------- [2026-09-03 09:17:47] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-03 09:25:33] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "158.69.117.45", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788420333 } -------------------------------------------------------------------------------- [2026-09-03 09:25:33] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-03 10:20:51] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "158.69.55.148", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788423651 } -------------------------------------------------------------------------------- [2026-09-03 10:20:51] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-03 15:21:55] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "103.196.9.132", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788441715 } -------------------------------------------------------------------------------- [2026-09-03 15:21:55] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:ad79:a95b:68a5:f1e0", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1788505849 } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-04 09:10:49] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Body brut reçu { "length": 933, "preview": "{\"userId\":\"12d9d2c3-3735-4028-9d64-91e6b9c9185c\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Body décodé { "userId": "12d9d2c3-3735-4028-9d64-91e6b9c9185c", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxMmQ5ZDJjMy0zNzM1LTQwMjgtOWQ2NC05MWU2YjljOTE4NWMiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzg4NTkyMDU1LCJpYXQiOjE3ODg1MDU2NTUsImVtYWlsIjoiaG9tZXByb3hpMTAzQGdtYWlsLmNvbSIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJob21lcHJveGkxMDNAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMTJkOWQyYzMtMzczNS00MDI4LTlkNjQtOTFlNmI5YzkxODVjIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3ODg1MDU2NTV9XSwic2Vzc2lvbl9pZCI6ImU1NGE3MDE3LWZkYjYtNDcwMS1hZjhmLTEyODVhZGRmNTg4OSIsImlzX2Fub255bW91cyI6ZmFsc2V9.CRN9fSAj1x35r7c9CZfbawHC6lI_75IyWyslfg7Mn3s" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] userId validé { "userId": "12d9d2c3-3735-4028-9d64-91e6b9c9185c" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-04 09:10:49] accessToken extrait { "length": 867, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-04 09:10:49] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"12d9d2c3-3735-4028-9d64-91e6b9c9185c\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"homeproxi103@gmail.com\",\"email_confirmed_at\":\"2026-09-04T07:07:01.205964Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-09-04T07:06:25.848974Z\",\"confirmed_at\":\"2026-09-04T07:07:01.205964Z\",\"last_sign_in_at\"" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Token vérifié { "token_user_id": "12d9d2c3-3735-4028-9d64-91e6b9c9185c", "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] === SUPPRESSION AUTORISÉE === { "user_id": "12d9d2c3-3735-4028-9d64-91e6b9c9185c", "email": "homeproxi103@gmail.com", "name": "homeproxi103" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-04 09:10:49] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.12d9d2c3-3735-4028-9d64-91e6b9c9185c&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-04 09:10:49] ÉTAPE 4: Envoi email suppression compte { "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "12d9d2c3-3735-4028-9d64-91e6b9c9185c" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Fichiers Storage trouvés { "count": 0, "prefix_used": "12D9D2C3-3735-4028-9D64-91E6B9C9185C/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-09-04 09:10:49] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "12d9d2c3-3735-4028-9d64-91e6b9c9185c" } -------------------------------------------------------------------------------- [2026-09-04 09:10:49] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "12d9d2c3-3735-4028-9d64-91e6b9c9185c" } } -------------------------------------------------------------------------------- [2026-09-04 09:10:50] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-04 09:10:50] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-04 09:10:50] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "12d9d2c3-3735-4028-9d64-91e6b9c9185c", "email": "homeproxi103@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-04 09:10:50] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "12d9d2c3-3735-4028-9d64-91e6b9c9185c", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:ad79:a95b:68a5:f1e0", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1788506728 } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-04 09:25:28] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Body brut reçu { "length": 933, "preview": "{\"userId\":\"aa8d5189-5d14-47a9-9216-2f44f62081b8\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Body décodé { "userId": "aa8d5189-5d14-47a9-9216-2f44f62081b8", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJhYThkNTE4OS01ZDE0LTQ3YTktOTIxNi0yZjQ0ZjYyMDgxYjgiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzg4NTkyNDE4LCJpYXQiOjE3ODg1MDYwMTgsImVtYWlsIjoiaG9tZXByb3hpMTAzQGdtYWlsLmNvbSIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJob21lcHJveGkxMDNAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiYWE4ZDUxODktNWQxNC00N2E5LTkyMTYtMmY0NGY2MjA4MWI4In0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3ODg1MDYwMTh9XSwic2Vzc2lvbl9pZCI6ImM1OTRlNmFhLWM2MmUtNGIxOS1iZWQ4LTFhYzFiNTFlZWQ0MiIsImlzX2Fub255bW91cyI6ZmFsc2V9.ZpOf8nUQ0CzuY8Up-W-zUXafl13ExLZKsbERK3gGATQ" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] userId validé { "userId": "aa8d5189-5d14-47a9-9216-2f44f62081b8" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-04 09:25:28] accessToken extrait { "length": 867, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-04 09:25:28] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"aa8d5189-5d14-47a9-9216-2f44f62081b8\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"homeproxi103@gmail.com\",\"email_confirmed_at\":\"2026-09-04T07:13:22.93152Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-09-04T07:12:29.666448Z\",\"confirmed_at\":\"2026-09-04T07:13:22.93152Z\",\"last_sign_in_at\":\"" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Token vérifié { "token_user_id": "aa8d5189-5d14-47a9-9216-2f44f62081b8", "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] === SUPPRESSION AUTORISÉE === { "user_id": "aa8d5189-5d14-47a9-9216-2f44f62081b8", "email": "homeproxi103@gmail.com", "name": "homeproxi103" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-04 09:25:28] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.aa8d5189-5d14-47a9-9216-2f44f62081b8&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ÉTAPE 4: Envoi email suppression compte { "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "aa8d5189-5d14-47a9-9216-2f44f62081b8" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Fichiers Storage trouvés { "count": 0, "prefix_used": "AA8D5189-5D14-47A9-9216-2F44F62081B8/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "aa8d5189-5d14-47a9-9216-2f44f62081b8" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "aa8d5189-5d14-47a9-9216-2f44f62081b8" } } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "aa8d5189-5d14-47a9-9216-2f44f62081b8", "email": "homeproxi103@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-04 09:25:28] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "aa8d5189-5d14-47a9-9216-2f44f62081b8", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:99ff:acc7:7a43:534b", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1788508097 } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-04 09:48:17] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Body brut reçu { "length": 933, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI2MTQ0ZDk1MS0xYzRhLTQ2ODMtY" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI2MTQ0ZDk1MS0xYzRhLTQ2ODMtYTQ5Yi00M2EwZTEwNTQ4MWYiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzg4NTkzNDUwLCJpYXQiOjE3ODg1MDcwNTAsImVtYWlsIjoiaG9tZXByb3hpMTAzQGdtYWlsLmNvbSIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJob21lcHJveGkxMDNAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiNjE0NGQ5NTEtMWM0YS00NjgzLWE0OWItNDNhMGUxMDU0ODFmIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3ODg1MDcwNTB9XSwic2Vzc2lvbl9pZCI6IjI0NmE4ODMwLWZmZjgtNDEzYi05Y2UyLWQ4NDQyNmRiNzkzYiIsImlzX2Fub255bW91cyI6ZmFsc2V9.X4h5wEkEnYINkxmL49CCqHZa6ity0y_Gw4RH-BHVrjw", "userId": "6144d951-1c4a-4683-a49b-43a0e105481f" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] userId validé { "userId": "6144d951-1c4a-4683-a49b-43a0e105481f" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-04 09:48:17] accessToken extrait { "length": 867, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-04 09:48:17] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"6144d951-1c4a-4683-a49b-43a0e105481f\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"homeproxi103@gmail.com\",\"email_confirmed_at\":\"2026-09-04T07:30:40.30835Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-09-04T07:30:21.564561Z\",\"confirmed_at\":\"2026-09-04T07:30:40.30835Z\",\"last_sign_in_at\":\"" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Token vérifié { "token_user_id": "6144d951-1c4a-4683-a49b-43a0e105481f", "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] === SUPPRESSION AUTORISÉE === { "user_id": "6144d951-1c4a-4683-a49b-43a0e105481f", "email": "homeproxi103@gmail.com", "name": "homeproxi103" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-04 09:48:17] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.6144d951-1c4a-4683-a49b-43a0e105481f&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ÉTAPE 4: Envoi email suppression compte { "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "6144d951-1c4a-4683-a49b-43a0e105481f" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Fichiers Storage trouvés { "count": 0, "prefix_used": "6144D951-1C4A-4683-A49B-43A0E105481F/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "6144d951-1c4a-4683-a49b-43a0e105481f" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "6144d951-1c4a-4683-a49b-43a0e105481f" } } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "6144d951-1c4a-4683-a49b-43a0e105481f", "email": "homeproxi103@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-04 09:48:17] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "6144d951-1c4a-4683-a49b-43a0e105481f", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-07 04:50:33] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "147.182.253.110", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788749433 } -------------------------------------------------------------------------------- [2026-09-07 04:50:33] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-07 09:00:34] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "164.92.72.43", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1788764434 } -------------------------------------------------------------------------------- [2026-09-07 09:00:34] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-13 11:19:07] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "147.182.244.134", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1789291147 } -------------------------------------------------------------------------------- [2026-09-13 11:19:07] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-15 12:21:11] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "143.110.234.64", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1789467671 } -------------------------------------------------------------------------------- [2026-09-15 12:21:11] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-18 13:51:51] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.8", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1789732311 } -------------------------------------------------------------------------------- [2026-09-18 13:51:51] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-22 14:44:12] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.16", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1790081052 } -------------------------------------------------------------------------------- [2026-09-22 14:44:12] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790694588 } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:09:48] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Body brut reçu { "length": 933, "preview": "{\"userId\":\"7d741843-054b-4d10-97e2-e2f580f83088\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Body décodé { "userId": "7d741843-054b-4d10-97e2-e2f580f83088", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI3ZDc0MTg0My0wNTRiLTRkMTAtOTdlMi1lMmY1ODBmODMwODgiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgwOTczLCJpYXQiOjE3OTA2OTQ1NzMsImVtYWlsIjoib2RpaG9tZS5pbW1vQGdtYWlsLmNvbSIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJvZGlob21lLmltbW9AZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiN2Q3NDE4NDMtMDU0Yi00ZDEwLTk3ZTItZTJmNTgwZjgzMDg4In0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3OTA2OTQ1NzN9XSwic2Vzc2lvbl9pZCI6IjZjMDE4MGZmLWY2OTEtNGYxZS1iMGVlLTE3NDA2NTc1YmIxZiIsImlzX2Fub255bW91cyI6ZmFsc2V9.y8_rfVYDte0p2t-WlM-rS5kIycvlXxTCu9cX3BG1Mq8" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] userId validé { "userId": "7d741843-054b-4d10-97e2-e2f580f83088" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:09:48] accessToken extrait { "length": 867, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:09:48] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"7d741843-054b-4d10-97e2-e2f580f83088\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"odihome.immo@gmail.com\",\"email_confirmed_at\":\"2026-09-19T09:08:22.589357Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-09-15T12:59:40.911994Z\",\"confirmed_at\":\"2026-09-19T09:08:22.589357Z\",\"last_sign_in_at\"" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Token vérifié { "token_user_id": "7d741843-054b-4d10-97e2-e2f580f83088", "email": "odihome.immo@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] === SUPPRESSION AUTORISÉE === { "user_id": "7d741843-054b-4d10-97e2-e2f580f83088", "email": "odihome.immo@gmail.com", "name": "odihome.immo" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:09:48] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.7d741843-054b-4d10-97e2-e2f580f83088&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ÉTAPE 4: Envoi email suppression compte { "email": "odihome.immo@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "7d741843-054b-4d10-97e2-e2f580f83088" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Fichiers Storage trouvés { "count": 1, "prefix_used": "7D741843-054B-4D10-97E2-E2F580F83088/", "files_preview": [ "7D741843-054B-4D10-97E2-E2F580F83088/property_journals/71CBB0C1-16BD-43FA-8F58-5588F4A5C4FC-ED8A533A-A76C-485B-8497-0709FD4042B8.jpg" ] } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] Lot supprimé { "http_code": 200, "in_lot": 1, "deleted": 1 } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ✅ Storage nettoyé { "supprimés": 1, "trouvés": 1 } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "7d741843-054b-4d10-97e2-e2f580f83088" } -------------------------------------------------------------------------------- [2026-09-29 17:09:48] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "7d741843-054b-4d10-97e2-e2f580f83088" } } -------------------------------------------------------------------------------- [2026-09-29 17:09:49] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:09:49] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:09:49] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "7d741843-054b-4d10-97e2-e2f580f83088", "email": "odihome.immo@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:09:49] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "7d741843-054b-4d10-97e2-e2f580f83088", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790694673 } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:11:13] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] Body brut reçu { "length": 933, "preview": "{\"userId\":\"730b96a4-f4be-410b-89cc-88235b3647d0\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] Body décodé { "userId": "730b96a4-f4be-410b-89cc-88235b3647d0", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI3MzBiOTZhNC1mNGJlLTQxMGItODljYy04ODIzNWIzNjQ3ZDAiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgxMDYyLCJpYXQiOjE3OTA2OTQ2NjIsImVtYWlsIjoiaG9tZXByb3hpMTAzQGdtYWlsLmNvbSIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJob21lcHJveGkxMDNAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiNzMwYjk2YTQtZjRiZS00MTBiLTg5Y2MtODgyMzViMzY0N2QwIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3OTA2OTQ2NjJ9XSwic2Vzc2lvbl9pZCI6ImZhNmQwZTMxLTQ5ZWMtNGZiYi1iN2YxLWZjMWRlYTViOTI2OSIsImlzX2Fub255bW91cyI6ZmFsc2V9.uQ3eyw4RVSUF7sfeb5aieYDY3Ao8jHuhAvy5G0Tshrg" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] userId validé { "userId": "730b96a4-f4be-410b-89cc-88235b3647d0" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:11:13] accessToken extrait { "length": 867, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:11:13] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"730b96a4-f4be-410b-89cc-88235b3647d0\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"homeproxi103@gmail.com\",\"email_confirmed_at\":\"2026-09-04T07:48:50.754222Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-09-04T07:48:33.15729Z\",\"confirmed_at\":\"2026-09-04T07:48:50.754222Z\",\"last_sign_in_at\":" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] Token vérifié { "token_user_id": "730b96a4-f4be-410b-89cc-88235b3647d0", "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] === SUPPRESSION AUTORISÉE === { "user_id": "730b96a4-f4be-410b-89cc-88235b3647d0", "email": "homeproxi103@gmail.com", "name": "homeproxi103" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:11:13] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.730b96a4-f4be-410b-89cc-88235b3647d0&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-29 17:11:13] ÉTAPE 4: Envoi email suppression compte { "email": "homeproxi103@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:11:13] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:11:13] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "730b96a4-f4be-410b-89cc-88235b3647d0" } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] Fichiers Storage trouvés { "count": 5, "prefix_used": "730B96A4-F4BE-410B-89CC-88235B3647D0/", "files_preview": [ "730B96A4-F4BE-410B-89CC-88235B3647D0/sub_entries/234F6E3F-34C8-42E4-B816-A4983DF8F489-041CDB7C-DAB8-4378-ADE7-BFED04A64FEF.jpg", "730B96A4-F4BE-410B-89CC-88235B3647D0/sub_entries/234F6E3F-34C8-42E4-B816-A4983DF8F489-2FCDE9AF-CF7A-43F6-9459-9E557CED32E2.jpg", "730B96A4-F4BE-410B-89CC-88235B3647D0/sub_entries/234F6E3F-34C8-42E4-B816-A4983DF8F489-999CB3DB-1A52-454F-84FA-40ED3AF720A3.jpg", "730B96A4-F4BE-410B-89CC-88235B3647D0/sub_entries/9B3ADBCE-7482-461A-85AA-72958E885116-3FEC1ACC-B5EA-4B67-A3E7-55813211B32E.jpg", "730B96A4-F4BE-410B-89CC-88235B3647D0/sub_entries/9B3ADBCE-7482-461A-85AA-72958E885116-E431BD5A-1344-46CC-B86C-44CBB5E04680.jpg" ] } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] Lot supprimé { "http_code": 200, "in_lot": 5, "deleted": 5 } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] ✅ Storage nettoyé { "supprimés": 5, "trouvés": 5 } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "730b96a4-f4be-410b-89cc-88235b3647d0" } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "730b96a4-f4be-410b-89cc-88235b3647d0" } } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "730b96a4-f4be-410b-89cc-88235b3647d0", "email": "homeproxi103@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:11:14] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "730b96a4-f4be-410b-89cc-88235b3647d0", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790694722 } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:12:02] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] Body brut reçu { "length": 917, "preview": "{\"userId\":\"ab7f261d-7aa7-43f3-a69b-cf138e105add\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] Body décodé { "userId": "ab7f261d-7aa7-43f3-a69b-cf138e105add", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJhYjdmMjYxZC03YWE3LTQzZjMtYTY5Yi1jZjEzOGUxMDVhZGQiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgxMTEwLCJpYXQiOjE3OTA2OTQ3MTAsImVtYWlsIjoiaW5mb0BvZGlob21lLmFwcCIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJpbmZvQG9kaWhvbWUuYXBwIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiYWI3ZjI2MWQtN2FhNy00M2YzLWE2OWItY2YxMzhlMTA1YWRkIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3OTA2OTQ3MTB9XSwic2Vzc2lvbl9pZCI6IjAzZmM4N2E0LWVlYTItNDI0Mi1iMjgwLTBmNTE2NTY4ZGQxZSIsImlzX2Fub255bW91cyI6ZmFsc2V9.yyvCrV8o4-Cie79PIK9utJE4ogMhYbe40Ggyqxam1qE" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] userId validé { "userId": "ab7f261d-7aa7-43f3-a69b-cf138e105add" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:12:02] accessToken extrait { "length": 851, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:12:02] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"ab7f261d-7aa7-43f3-a69b-cf138e105add\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"info@odihome.app\",\"email_confirmed_at\":\"2026-07-18T13:09:45.83281Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-07-18T13:09:02.030541Z\",\"confirmed_at\":\"2026-07-18T13:09:45.83281Z\",\"last_sign_in_at\":\"2026-0" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] Token vérifié { "token_user_id": "ab7f261d-7aa7-43f3-a69b-cf138e105add", "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] === SUPPRESSION AUTORISÉE === { "user_id": "ab7f261d-7aa7-43f3-a69b-cf138e105add", "email": "info@odihome.app", "name": "info" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:12:02] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.ab7f261d-7aa7-43f3-a69b-cf138e105add&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[{\"id\":\"146818dc-cd70-40be-87e5-7669887b39ef\",\"stripe_subscription_id\":\"sub_1U3gB1CmOXyFMbariOgMvUmL\",\"plan_id\":\"individual_starter\",\"status\":\"active\",\"cancel_at_period_end\":false}]" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] Abonnement actif trouvé { "id": "146818dc-cd70-40be-87e5-7669887b39ef", "stripe_subscription_id": "sub_1U3gB1CmOXyFMbariOgMvUmL", "plan_id": "individual_starter", "status": "active", "cancel_at_period_end": false } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] ÉTAPE 3: Annulation Stripe directe { "stripe_id": "sub_1U3gB1CmOXyFMbariOgMvUmL" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] Chemin .env Stripe { "path": "/home/odihomi/webhook/auth/../stripe-api/config/.env", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:12:02] STRIPE_SECRET_KEY { "found": true, "preview": "sk_live_51…" } -------------------------------------------------------------------------------- [2026-09-29 17:12:03] Stripe API ← { "http_code": 200, "curl_error": null, "status": "canceled", "body_preview": "{\n \"id\": \"sub_1U3gB1CmOXyFMbariOgMvUmL\",\n \"object\": \"subscription\",\n \"application\": null,\n \"application_fee_percent\": null,\n \"automatic_tax\": {\n \"disabled_reason\": null,\n \"enabled\": false,\n \"liability\": null\n },\n \"billing_cycle_anchor\": 1786556537,\n \"billing_cycle_anchor_config\": nu" } -------------------------------------------------------------------------------- [2026-09-29 17:12:03] ✅ Stripe annulé immédiatement { "stripe_id": "sub_1U3gB1CmOXyFMbariOgMvUmL", "status": "canceled" } -------------------------------------------------------------------------------- [2026-09-29 17:12:03] ÉTAPE 4: Envoi email suppression compte { "email": "info@odihome.app" } -------------------------------------------------------------------------------- [2026-09-29 17:12:03] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:12:03] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:12:03] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:12:03] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "ab7f261d-7aa7-43f3-a69b-cf138e105add" } -------------------------------------------------------------------------------- [2026-09-29 17:12:04] Fichiers Storage trouvés { "count": 20, "prefix_used": "AB7F261D-7AA7-43F3-A69B-CF138E105ADD/", "files_preview": [ "AB7F261D-7AA7-43F3-A69B-CF138E105ADD/journal_entries/877D3B38-2818-4D7B-89BC-113C7665AC7C-0D364EA3-BDA6-421D-8EB3-5C9C2594A0EE.jpg", "AB7F261D-7AA7-43F3-A69B-CF138E105ADD/journal_entries/877D3B38-2818-4D7B-89BC-113C7665AC7C-A71EA404-41CB-4902-A9DA-A3020E6A0C23.jpg", "AB7F261D-7AA7-43F3-A69B-CF138E105ADD/journal_entries/877D3B38-2818-4D7B-89BC-113C7665AC7C-FD49D143-A2B2-4DEE-9D62-A80A60B301EB.jpg", "AB7F261D-7AA7-43F3-A69B-CF138E105ADD/property_journals/593FAA07-B8C1-41F6-98DD-0D19BDEB05BE-FF29101D-A7C2-40D6-BA96-529DADE15CD1.jpg", "AB7F261D-7AA7-43F3-A69B-CF138E105ADD/property_journals/90A0C32F-E663-4CEB-8A29-AAA03299E68F-FD2A395E-9660-4AE0-A31F-68E5CC66887E.jpg" ] } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] Lot supprimé { "http_code": 200, "in_lot": 20, "deleted": 20 } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] ✅ Storage nettoyé { "supprimés": 20, "trouvés": 20 } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "ab7f261d-7aa7-43f3-a69b-cf138e105add" } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "ab7f261d-7aa7-43f3-a69b-cf138e105add" } } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "ab7f261d-7aa7-43f3-a69b-cf138e105add", "email": "info@odihome.app", "subscription_cancelled": true, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:12:05] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "ab7f261d-7aa7-43f3-a69b-cf138e105add", "subscriptionCancelled": true } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790694871 } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:14:31] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] Body brut reçu { "length": 931, "preview": "{\"userId\":\"2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] Body décodé { "userId": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIyZmMyMmI0Zi1kN2Q4LTRiY2YtODkyZS1lMmI1OTAxZjg1YWMiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgxMTc4LCJpYXQiOjE3OTA2OTQ3NzgsImVtYWlsIjoicmV6b3dlYnNpdGVAZ21haWwuY29tIiwicGhvbmUiOiIiLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwidXNlcl9tZXRhZGF0YSI6eyJlbWFpbCI6InJlem93ZWJzaXRlQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwaG9uZV92ZXJpZmllZCI6ZmFsc2UsInN1YiI6IjJmYzIyYjRmLWQ3ZDgtNGJjZi04OTJlLWUyYjU5MDFmODVhYyJ9LCJyb2xlIjoiYXV0aGVudGljYXRlZCIsImFhbCI6ImFhbDEiLCJhbXIiOlt7Im1ldGhvZCI6InBhc3N3b3JkIiwidGltZXN0YW1wIjoxNzkwNjk0Nzc4fV0sInNlc3Npb25faWQiOiIyM2I2MjM2OS1lZTM0LTQ1MzYtYTEzMS0wYThmMzY5MjBhODgiLCJpc19hbm9ueW1vdXMiOmZhbHNlfQ.ZuoiqCHhhmZvXkNO4jqnwgbFA0caG96b4bVfTqPz6VI" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] userId validé { "userId": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:14:31] accessToken extrait { "length": 865, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:14:31] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"rezowebsite@gmail.com\",\"email_confirmed_at\":\"2026-05-18T17:34:27.585596Z\",\"phone\":\"\",\"confirmed_at\":\"2026-05-18T17:34:27.585596Z\",\"recovery_sent_at\":\"2026-07-21T09:43:24.879415Z\",\"last_sign_in_at\":\"202" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] Token vérifié { "token_user_id": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac", "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] === SUPPRESSION AUTORISÉE === { "user_id": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac", "email": "rezowebsite@gmail.com", "name": "rezowebsite" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:14:31] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-29 17:14:31] ÉTAPE 4: Envoi email suppression compte { "email": "rezowebsite@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:14:31] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:14:31] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac" } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] Fichiers Storage trouvés { "count": 7, "prefix_used": "2FC22B4F-D7D8-4BCF-892E-E2B5901F85AC/", "files_preview": [ "2FC22B4F-D7D8-4BCF-892E-E2B5901F85AC/PDF/dictaphone_entree_chalet_2026-07-28T13-48-07Z.pdf", "2FC22B4F-D7D8-4BCF-892E-E2B5901F85AC/property_journals/AC96FE32-C6B7-4DDD-8785-DBA72F9F2B01-AC96FE32-C6B7-4DDD-8785-DBA72F9F2B01.jpg", "2FC22B4F-D7D8-4BCF-892E-E2B5901F85AC/property_journals/ac96fe32-c6b7-4ddd-8785-dba72f9f2b01-dd8cbf21-f422-4fcf-86bc-6bc8796b4ca5.jpg", "2FC22B4F-D7D8-4BCF-892E-E2B5901F85AC/sub_entries/22B6727A-E77C-44C6-86D5-A40534192F45-64A9C61F-B244-40F5-BFCD-1731B42F9464.jpg", "2FC22B4F-D7D8-4BCF-892E-E2B5901F85AC/sub_entries/86BB3AAD-CFA4-4C69-B8B1-108458DB52E3-0B7A73F2-09DB-4A77-AEA7-9AAC4213B338.jpg" ] } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] Lot supprimé { "http_code": 200, "in_lot": 7, "deleted": 6 } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] ✅ Storage nettoyé { "supprimés": 6, "trouvés": 7 } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac" } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac" } } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac", "email": "rezowebsite@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:14:32] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "2fc22b4f-d7d8-4bcf-892e-e2b5901f85ac", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790694961 } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:16:01] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Body brut reçu { "length": 923, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIwZjhlYjcyZC04NzBmLTQ3ZWEtY" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIwZjhlYjcyZC04NzBmLTQ3ZWEtYWMyMC01ZTU4NWFkZWRmM2IiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgxMzAzLCJpYXQiOjE3OTA2OTQ5MDMsImVtYWlsIjoiYWdlbnQyQG9kaWhvbWUuYXBwIiwicGhvbmUiOiIiLCJhcHBfbWV0YWRhdGEiOnsicHJvdmlkZXIiOiJlbWFpbCIsInByb3ZpZGVycyI6WyJlbWFpbCJdfSwidXNlcl9tZXRhZGF0YSI6eyJlbWFpbCI6ImFnZW50MkBvZGlob21lLmFwcCIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwaG9uZV92ZXJpZmllZCI6ZmFsc2UsInN1YiI6IjBmOGViNzJkLTg3MGYtNDdlYS1hYzIwLTVlNTg1YWRlZGYzYiJ9LCJyb2xlIjoiYXV0aGVudGljYXRlZCIsImFhbCI6ImFhbDEiLCJhbXIiOlt7Im1ldGhvZCI6InBhc3N3b3JkIiwidGltZXN0YW1wIjoxNzkwNjk0OTAzfV0sInNlc3Npb25faWQiOiI3ZDVjNWIyYi1mNjZmLTRkZjQtYjNlMi0xN2M3MDNiMWNkN2IiLCJpc19hbm9ueW1vdXMiOmZhbHNlfQ.vKQsTbh9B-y7dn2Qz7DyyuT3Kg-jzViCNoXqreTspKc", "userId": "0f8eb72d-870f-47ea-ac20-5e585adedf3b" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] userId validé { "userId": "0f8eb72d-870f-47ea-ac20-5e585adedf3b" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:16:01] accessToken extrait { "length": 857, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:16:01] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"0f8eb72d-870f-47ea-ac20-5e585adedf3b\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"agent2@odihome.app\",\"email_confirmed_at\":\"2026-05-18T09:52:44.115299Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-05-17T13:00:56.737712Z\",\"confirmed_at\":\"2026-05-18T09:52:44.115299Z\",\"last_sign_in_at\":\"20" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Token vérifié { "token_user_id": "0f8eb72d-870f-47ea-ac20-5e585adedf3b", "email": "agent2@odihome.app" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] === SUPPRESSION AUTORISÉE === { "user_id": "0f8eb72d-870f-47ea-ac20-5e585adedf3b", "email": "agent2@odihome.app", "name": "agent2" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:16:01] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.0f8eb72d-870f-47ea-ac20-5e585adedf3b&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ÉTAPE 4: Envoi email suppression compte { "email": "agent2@odihome.app" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "0f8eb72d-870f-47ea-ac20-5e585adedf3b" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Fichiers Storage trouvés { "count": 0, "prefix_used": "0F8EB72D-870F-47EA-AC20-5E585ADEDF3B/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "0f8eb72d-870f-47ea-ac20-5e585adedf3b" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "0f8eb72d-870f-47ea-ac20-5e585adedf3b" } } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "0f8eb72d-870f-47ea-ac20-5e585adedf3b", "email": "agent2@odihome.app", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:16:01] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "0f8eb72d-870f-47ea-ac20-5e585adedf3b", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-29 17:17:34] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790695054 } -------------------------------------------------------------------------------- [2026-09-29 17:17:34] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:17:34] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:17:34] Body brut reçu { "length": 993, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxYjZiMTE5MC1iNTk5LTRhZGMtO" } -------------------------------------------------------------------------------- [2026-09-29 17:17:34] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIxYjZiMTE5MC1iNTk5LTRhZGMtODYwNy04NTI3NjZkZGUyZjYiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgxMzk1LCJpYXQiOjE3OTA2OTQ5OTUsImVtYWlsIjoiYWdlbnQxb2RpaG9tZUBnbWFpbC5jb20iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoiYWdlbnQxb2RpaG9tZUBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZmlyc3RfbmFtZSI6IkFnZW50IiwibGFzdF9uYW1lIjoiT2RpaG9tZSIsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMWI2YjExOTAtYjU5OS00YWRjLTg2MDctODUyNzY2ZGRlMmY2In0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3OTA2OTQ5OTV9XSwic2Vzc2lvbl9pZCI6IjhmNjRhMmFkLTgyY2QtNGM3Yi1hNWNhLWVlNmRiZDZiYTc5YSIsImlzX2Fub255bW91cyI6ZmFsc2V9.DNzmmISitJd3n_-TcaSRMHl1uv6V2Q2WgppPTOdPGvI", "userId": "1b6b1190-b599-4adc-8607-852766dde2f6" } -------------------------------------------------------------------------------- [2026-09-29 17:17:34] userId validé { "userId": "1b6b1190-b599-4adc-8607-852766dde2f6" } -------------------------------------------------------------------------------- [2026-09-29 17:17:34] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:17:34] accessToken extrait { "length": 927, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:17:34] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:17:34] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"1b6b1190-b599-4adc-8607-852766dde2f6\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"agent1odihome@gmail.com\",\"email_confirmed_at\":\"2026-05-09T08:13:27.264544Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-05-09T08:12:52.348067Z\",\"confirmed_at\":\"2026-05-09T08:13:27.264544Z\",\"last_sign_in_at" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] Token vérifié { "token_user_id": "1b6b1190-b599-4adc-8607-852766dde2f6", "email": "agent1odihome@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] === SUPPRESSION AUTORISÉE === { "user_id": "1b6b1190-b599-4adc-8607-852766dde2f6", "email": "agent1odihome@gmail.com", "name": "Créent Odihome" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:17:35] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.1b6b1190-b599-4adc-8607-852766dde2f6&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-29 17:17:35] ÉTAPE 4: Envoi email suppression compte { "email": "agent1odihome@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:17:35] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "1b6b1190-b599-4adc-8607-852766dde2f6" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] Fichiers Storage trouvés { "count": 1, "prefix_used": "1B6B1190-B599-4ADC-8607-852766DDE2F6/", "files_preview": [ "1B6B1190-B599-4ADC-8607-852766DDE2F6/property_journals/EB9DEEED-79F5-4C95-9823-455B002B76BC-9BC23F0C-B000-44E3-A204-42EA81295558.jpg" ] } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] Lot supprimé { "http_code": 200, "in_lot": 1, "deleted": 1 } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] ✅ Storage nettoyé { "supprimés": 1, "trouvés": 1 } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "1b6b1190-b599-4adc-8607-852766dde2f6" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "1b6b1190-b599-4adc-8607-852766dde2f6" } } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "1b6b1190-b599-4adc-8607-852766dde2f6", "email": "agent1odihome@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:17:35] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "1b6b1190-b599-4adc-8607-852766dde2f6", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790695111 } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:18:31] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Body brut reçu { "length": 989, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJiMjFkOTcyZC0yMWNiLTRjOWMtO" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiJiMjFkOTcyZC0yMWNiLTRjOWMtOTY4ZC02MmFmYzg3ZjVkMmEiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgxNDg1LCJpYXQiOjE3OTA2OTUwODUsImVtYWlsIjoibWFuZ3dhbmd1LnR6ckBnbWFpbC5jb20iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoibWFuZ3dhbmd1LnR6ckBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZmlyc3RfbmFtZSI6IktvbmdvIiwibGFzdF9uYW1lIjoiTWFzYSIsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiYjIxZDk3MmQtMjFjYi00YzljLTk2OGQtNjJhZmM4N2Y1ZDJhIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3OTA2OTUwODV9XSwic2Vzc2lvbl9pZCI6IjU5ZDFjYmYyLTI0NDEtNDc4MC04MjQ3LTBiNjNjMjEzMDMzYiIsImlzX2Fub255bW91cyI6ZmFsc2V9.Bg9nzaXrMdO_M69uvnQUW4F26PS37jFI-KAaoChRY-M", "userId": "b21d972d-21cb-4c9c-968d-62afc87f5d2a" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] userId validé { "userId": "b21d972d-21cb-4c9c-968d-62afc87f5d2a" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:18:31] accessToken extrait { "length": 923, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:18:31] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"b21d972d-21cb-4c9c-968d-62afc87f5d2a\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"mangwangu.tzr@gmail.com\",\"email_confirmed_at\":\"2026-01-07T08:29:58.781742Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-01-07T08:29:33.094954Z\",\"confirmed_at\":\"2026-01-07T08:29:58.781742Z\",\"last_sign_in_at" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Token vérifié { "token_user_id": "b21d972d-21cb-4c9c-968d-62afc87f5d2a", "email": "mangwangu.tzr@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] === SUPPRESSION AUTORISÉE === { "user_id": "b21d972d-21cb-4c9c-968d-62afc87f5d2a", "email": "mangwangu.tzr@gmail.com", "name": "Très Masa" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:18:31] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.b21d972d-21cb-4c9c-968d-62afc87f5d2a&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ÉTAPE 4: Envoi email suppression compte { "email": "mangwangu.tzr@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "b21d972d-21cb-4c9c-968d-62afc87f5d2a" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Fichiers Storage trouvés { "count": 0, "prefix_used": "B21D972D-21CB-4C9C-968D-62AFC87F5D2A/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "b21d972d-21cb-4c9c-968d-62afc87f5d2a" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "b21d972d-21cb-4c9c-968d-62afc87f5d2a" } } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "b21d972d-21cb-4c9c-968d-62afc87f5d2a", "email": "mangwangu.tzr@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:18:31] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "b21d972d-21cb-4c9c-968d-62afc87f5d2a", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2a02:a03f:6b21:de01:6cb2:6195:6dd9:a0b2", "user_agent": "Odihome/3 CFNetwork/3860.600.12 Darwin/25.5.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790695366 } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-29 17:22:46] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Body brut reçu { "length": 1015, "preview": "{\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI4YmY0MGI5Mi00NjQ5LTQwMDgtY" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Body décodé { "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiI4YmY0MGI5Mi00NjQ5LTQwMDgtYjAxOC0xMWRlOTkwYTJjMGEiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwNzgxNzU0LCJpYXQiOjE3OTA2OTUzNTQsImVtYWlsIjoidHJlem9yLm1hbmcrYW5kcm9pZHFhMUBnbWFpbC5jb20iLCJwaG9uZSI6IiIsImFwcF9tZXRhZGF0YSI6eyJwcm92aWRlciI6ImVtYWlsIiwicHJvdmlkZXJzIjpbImVtYWlsIl19LCJ1c2VyX21ldGFkYXRhIjp7ImVtYWlsIjoidHJlem9yLm1hbmcrYW5kcm9pZHFhMUBnbWFpbC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZmlyc3RfbmFtZSI6IlRlc3RRQTIwMjYiLCJsYXN0X25hbWUiOiIiLCJwaG9uZV92ZXJpZmllZCI6ZmFsc2UsInN1YiI6IjhiZjQwYjkyLTQ2NDktNDAwOC1iMDE4LTExZGU5OTBhMmMwYSJ9LCJyb2xlIjoiYXV0aGVudGljYXRlZCIsImFhbCI6ImFhbDEiLCJhbXIiOlt7Im1ldGhvZCI6InBhc3N3b3JkIiwidGltZXN0YW1wIjoxNzkwNjk1MzU0fV0sInNlc3Npb25faWQiOiJmMDgwZTUxOC0yMGFhLTQxMWQtYjNlMi1kODRmODE0OGU4ODIiLCJpc19hbm9ueW1vdXMiOmZhbHNlfQ.jMSq1q_fydH7qso2qlVnzoKQnr7i_lxWS802ClIB22E", "userId": "8bf40b92-4649-4008-b018-11de990a2c0a" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] userId validé { "userId": "8bf40b92-4649-4008-b018-11de990a2c0a" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-29 17:22:46] accessToken extrait { "length": 949, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-29 17:22:46] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"8bf40b92-4649-4008-b018-11de990a2c0a\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"trezor.mang+androidqa1@gmail.com\",\"email_confirmed_at\":\"2026-09-18T13:12:32.927805Z\",\"phone\":\"\",\"confirmation_sent_at\":\"2026-09-18T12:43:06.82388Z\",\"confirmed_at\":\"2026-09-18T13:12:32.927805Z\",\"last_si" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Token vérifié { "token_user_id": "8bf40b92-4649-4008-b018-11de990a2c0a", "email": "trezor.mang+androidqa1@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] === SUPPRESSION AUTORISÉE === { "user_id": "8bf40b92-4649-4008-b018-11de990a2c0a", "email": "trezor.mang+androidqa1@gmail.com", "name": "TestQA2026" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-29 17:22:46] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.8bf40b92-4649-4008-b018-11de990a2c0a&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ÉTAPE 4: Envoi email suppression compte { "email": "trezor.mang+androidqa1@gmail.com" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "8bf40b92-4649-4008-b018-11de990a2c0a" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Fichiers Storage trouvés { "count": 0, "prefix_used": "8BF40B92-4649-4008-B018-11DE990A2C0A/", "files_preview": [] } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Aucun fichier Storage trouvé pour cet user (bucket déjà vide) -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "8bf40b92-4649-4008-b018-11de990a2c0a" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "8bf40b92-4649-4008-b018-11de990a2c0a" } } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "8bf40b92-4649-4008-b018-11de990a2c0a", "email": "trezor.mang+androidqa1@gmail.com", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-29 17:22:46] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "8bf40b92-4649-4008-b018-11de990a2c0a", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] ========== SCRIPT ENTRÉ ========== { "method": "POST", "remote_ip": "2001:861:3e87:8ca0:149d:2818:8df0:8fb9", "user_agent": "Odihome/3 CFNetwork/3860.700.1 Darwin/25.6.0", "content_type": "application/json", "php_version": "8.2.31", "timestamp": 1790794331 } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] Chargement supabase_config.php -------------------------------------------------------------------------------- [2026-09-30 20:52:11] supabase_config.php chargé { "SUPABASE_URL_defined": "https://lvtdqnzsqdqcqqimsnuy.supabase.co…", "SUPABASE_ANON_KEY_defined": "OUI (208 chars)", "SUPABASE_SERVICE_ROLE_KEY_defined": "OUI (219 chars)" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] Body brut reçu { "length": 985, "preview": "{\"userId\":\"2bb8f43c-5bd6-473c-b490-059da4bc18fb\",\"accessToken\":\"eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] Body décodé { "userId": "2bb8f43c-5bd6-473c-b490-059da4bc18fb", "accessToken": "eyJhbGciOiJIUzI1NiIsImtpZCI6Imt5eXhVbUFicUc3WnVNU3giLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2x2dGRxbnpzcWRxY3FxaW1zbnV5LnN1cGFiYXNlLmNvL2F1dGgvdjEiLCJzdWIiOiIyYmI4ZjQzYy01YmQ2LTQ3M2MtYjQ5MC0wNTlkYTRiYzE4ZmIiLCJhdWQiOiJhdXRoZW50aWNhdGVkIiwiZXhwIjoxNzkwODgwNTEzLCJpYXQiOjE3OTA3OTQxMTMsImVtYWlsIjoiZXN0aW1ob21lQHNmci5mciIsInBob25lIjoiIiwiYXBwX21ldGFkYXRhIjp7InByb3ZpZGVyIjoiZW1haWwiLCJwcm92aWRlcnMiOlsiZW1haWwiXX0sInVzZXJfbWV0YWRhdGEiOnsiZW1haWwiOiJlc3RpbWhvbWVAc2ZyLmZyIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImZpcnN0X25hbWUiOiJKZWFuLVBoaWxpcHBlIiwibGFzdF9uYW1lIjoiRklFRkZFTCIsInBob25lX3ZlcmlmaWVkIjpmYWxzZSwic3ViIjoiMmJiOGY0M2MtNWJkNi00NzNjLWI0OTAtMDU5ZGE0YmMxOGZiIn0sInJvbGUiOiJhdXRoZW50aWNhdGVkIiwiYWFsIjoiYWFsMSIsImFtciI6W3sibWV0aG9kIjoicGFzc3dvcmQiLCJ0aW1lc3RhbXAiOjE3ODQ1MTgxNTh9XSwic2Vzc2lvbl9pZCI6IjA4YzM1ZmIxLTMxYzctNDM3MS04NWVlLWU2NDJjZjI4NGRlMyIsImlzX2Fub255bW91cyI6ZmFsc2V9.JJwpkQomdcAKMEMaUgp3L64vXSNvDvDXqMMJgeykQ5M" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] userId validé { "userId": "2bb8f43c-5bd6-473c-b490-059da4bc18fb" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] accessToken lu depuis le body JSON -------------------------------------------------------------------------------- [2026-09-30 20:52:11] accessToken extrait { "length": 919, "preview": "eyJhbGciOiJIUzI1NiIs…" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] ÉTAPE 1: Vérification token Supabase /auth/v1/user -------------------------------------------------------------------------------- [2026-09-30 20:52:11] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/auth/v1/user" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "{\"id\":\"2bb8f43c-5bd6-473c-b490-059da4bc18fb\",\"aud\":\"authenticated\",\"role\":\"authenticated\",\"email\":\"estimhome@sfr.fr\",\"email_confirmed_at\":\"2026-05-12T14:58:23.513277Z\",\"phone\":\"\",\"confirmed_at\":\"2026-05-12T14:58:23.513277Z\",\"last_sign_in_at\":\"2026-09-11T10:25:27.61541Z\",\"app_metadata\":{\"provider\":\"e" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] Token vérifié { "token_user_id": "2bb8f43c-5bd6-473c-b490-059da4bc18fb", "email": "estimhome@sfr.fr" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] === SUPPRESSION AUTORISÉE === { "user_id": "2bb8f43c-5bd6-473c-b490-059da4bc18fb", "email": "estimhome@sfr.fr", "name": "Jean-Philippe FIEFFEL" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] ÉTAPE 2: Recherche abonnement actif dans Supabase -------------------------------------------------------------------------------- [2026-09-30 20:52:11] curlGet → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/user_subscriptions?user_id=eq.2bb8f43c-5bd6-473c-b490-059da4bc18fb&status=in.(active,trialing)&select=id,stripe_subscription_id,plan_id,status,cancel_at_period_end&limit=1" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] curlGet ← { "http_code": 200, "curl_error": null, "body_preview": "[]" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] Aucun abonnement actif { "http_code": 200, "data": [] } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] ÉTAPE 3: Pas d'abonnement Stripe à annuler -------------------------------------------------------------------------------- [2026-09-30 20:52:11] ÉTAPE 4: Envoi email suppression compte { "email": "estimhome@sfr.fr" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] Template path { "path": "/home/odihomi/webhook/auth/delete-email.html", "exists": "OUI" } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] mail() disponible: OUI -------------------------------------------------------------------------------- [2026-09-30 20:52:11] Résultat mail() { "sent": "OUI", "last_error": null } -------------------------------------------------------------------------------- [2026-09-30 20:52:11] ÉTAPE 5: Suppression Storage bucket immovision-images { "user_id": "2bb8f43c-5bd6-473c-b490-059da4bc18fb" } -------------------------------------------------------------------------------- [2026-09-30 20:52:12] Fichiers Storage trouvés { "count": 15, "prefix_used": "2BB8F43C-5BD6-473C-B490-059DA4BC18FB/", "files_preview": [ "2BB8F43C-5BD6-473C-B490-059DA4BC18FB/meters/C14E74A1-5ECA-4250-81C7-F3A5EC2D492A-053254B2-7C15-410E-A8A7-3CDCDEF7AC87.jpg", "2BB8F43C-5BD6-473C-B490-059DA4BC18FB/PDF/dictaphone_entree_appartement_2026-06-30T17-40-58Z.pdf", "2BB8F43C-5BD6-473C-B490-059DA4BC18FB/PDF/dictaphone_entree_appartement_2026-06-30T17-42-32Z.pdf", "2BB8F43C-5BD6-473C-B490-059DA4BC18FB/PDF/dictaphone_entree_appartement_2026-06-30T17-42-53Z.pdf", "2BB8F43C-5BD6-473C-B490-059DA4BC18FB/PDF/dictaphone_entree_appartement_2026-06-30T17-49-25Z.pdf" ] } -------------------------------------------------------------------------------- [2026-09-30 20:52:12] Lot supprimé { "http_code": 200, "in_lot": 15, "deleted": 14 } -------------------------------------------------------------------------------- [2026-09-30 20:52:12] ✅ Storage nettoyé { "supprimés": 14, "trouvés": 15 } -------------------------------------------------------------------------------- [2026-09-30 20:52:12] ÉTAPE 6: Suppression compte via RPC delete_user_account { "user_id": "2bb8f43c-5bd6-473c-b490-059da4bc18fb" } -------------------------------------------------------------------------------- [2026-09-30 20:52:12] curlPost → { "url": "https://lvtdqnzsqdqcqqimsnuy.supabase.co/rest/v1/rpc/delete_user_account", "payload": { "target_user_id": "2bb8f43c-5bd6-473c-b490-059da4bc18fb" } } -------------------------------------------------------------------------------- [2026-09-30 20:52:12] curlPost ← { "http_code": 204, "curl_error": null, "body_preview": "" } -------------------------------------------------------------------------------- [2026-09-30 20:52:13] Résultat suppression { "http_code": 204, "response": null } -------------------------------------------------------------------------------- [2026-09-30 20:52:13] ✅ COMPTE SUPPRIMÉ AVEC SUCCÈS { "user_id": "2bb8f43c-5bd6-473c-b490-059da4bc18fb", "email": "estimhome@sfr.fr", "subscription_cancelled": false, "http_code": 204 } -------------------------------------------------------------------------------- [2026-09-30 20:52:13] jsonResponse HTTP 200 { "success": true, "message": "Compte supprimé avec succès", "userId": "2bb8f43c-5bd6-473c-b490-059da4bc18fb", "subscriptionCancelled": false } -------------------------------------------------------------------------------- [2026-10-01 16:38:52] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "104.131.164.91", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1790865532 } -------------------------------------------------------------------------------- [2026-10-01 16:38:52] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-04 14:09:13] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "164.90.147.237", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1791115753 } -------------------------------------------------------------------------------- [2026-10-04 14:09:13] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-08 17:48:30] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "104.224.66.105", "user_agent": "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4) Gecko/20030624", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1791474510 } -------------------------------------------------------------------------------- [2026-10-08 17:48:30] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-15 05:17:59] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "64.227.72.21", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1792034279 } -------------------------------------------------------------------------------- [2026-10-15 05:17:59] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-16 16:10:16] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.12", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1792159816 } -------------------------------------------------------------------------------- [2026-10-16 16:10:16] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-18 07:26:22] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "104.248.94.56", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0", "content_type": "UNKNOWN", "php_version": "8.2.31", "timestamp": 1792301182 } -------------------------------------------------------------------------------- [2026-10-18 07:26:22] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-25 20:04:29] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "5.107.213.138", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1792955069 } -------------------------------------------------------------------------------- [2026-10-25 20:04:29] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-25 20:04:31] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "41.122.198.200", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1792955071 } -------------------------------------------------------------------------------- [2026-10-25 20:04:31] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-25 20:04:34] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "181.224.92.107", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1792955074 } -------------------------------------------------------------------------------- [2026-10-25 20:04:34] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-27 04:37:21] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "200.203.47.30", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1793072241 } -------------------------------------------------------------------------------- [2026-10-27 04:37:21] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-27 04:37:24] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "105.185.160.218", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1793072244 } -------------------------------------------------------------------------------- [2026-10-27 04:37:24] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-27 04:37:27] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "186.64.212.243", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1793072247 } -------------------------------------------------------------------------------- [2026-10-27 04:37:27] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-28 12:15:04] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.10", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1793186104 } -------------------------------------------------------------------------------- [2026-10-28 12:15:04] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-10-29 17:05:40] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "206.189.237.114", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1793289940 } -------------------------------------------------------------------------------- [2026-10-29 17:05:40] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-11-01 05:22:10] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "167.99.49.224", "user_agent": "Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1793506930 } -------------------------------------------------------------------------------- [2026-11-01 05:22:10] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-11-12 05:04:24] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "138.197.109.69", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1794456264 } -------------------------------------------------------------------------------- [2026-11-12 05:04:24] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-11-13 01:45:28] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "185.191.171.19", "user_agent": "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1794530728 } -------------------------------------------------------------------------------- [2026-11-13 01:45:28] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-11-13 02:59:46] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "216.73.216.142", "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1794535186 } -------------------------------------------------------------------------------- [2026-11-13 02:59:46] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-11-13 03:11:26] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "104.164.173.45", "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1794535886 } -------------------------------------------------------------------------------- [2026-11-13 03:11:26] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-11-13 03:18:36] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "158.69.117.45", "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1794536316 } -------------------------------------------------------------------------------- [2026-11-13 03:18:36] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } -------------------------------------------------------------------------------- [2026-11-13 03:35:33] ========== SCRIPT ENTRÉ ========== { "method": "GET", "remote_ip": "216.73.216.142", "user_agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "content_type": "UNKNOWN", "php_version": "8.2.35", "timestamp": 1794537333 } -------------------------------------------------------------------------------- [2026-11-13 03:35:33] jsonResponse HTTP 405 { "error": "Méthode non autorisée" } --------------------------------------------------------------------------------