From e0c41b76c3f1e4d608493c45733cc1b1b69e70b1 Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Thu, 8 Jan 2026 23:33:04 +0100 Subject: [PATCH] Enhance debug logging for Passkey Registration requests Improve logging in the register-passkey-options and log-requests middleware to provide detailed insights into request handling. Add user-agent analysis, IP address logging, and mobile/desktop detection to aid in troubleshooting. This update aims to enhance the clarity of request logs and support better debugging during the Passkey registration process. --- .../api/auth/register-passkey-options.post.js | 21 ++++++++++++--- server/middleware/log-requests.js | 26 +++++++++++++++---- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/server/api/auth/register-passkey-options.post.js b/server/api/auth/register-passkey-options.post.js index dc37d41..073f5cf 100644 --- a/server/api/auth/register-passkey-options.post.js +++ b/server/api/auth/register-passkey-options.post.js @@ -16,14 +16,27 @@ export default defineEventHandler(async (event) => { const nodeEnv = process.env.NODE_ENV || 'development' // Debug-Ausgaben immer ausgeben (nicht nur in dev) - console.log('[DEBUG] register-passkey-options request received', { - origin: requestOrigin, - userAgent: userAgent?.substring(0, 100), + console.log('') + console.log('='.repeat(80)) + console.log('[DEBUG] 📋 ===== REGISTRATION OPTIONS REQUEST RECEIVED =====') + console.log('='.repeat(80)) + console.log('[DEBUG] Request Details:', { + origin: requestOrigin || 'none', + userAgent: userAgent?.substring(0, 150) || 'none', method: getMethod(event), timestamp: new Date().toISOString(), nodeEnv: nodeEnv, - pid: process.pid + pid: process.pid, + ip: getHeader(event, 'x-forwarded-for') || getHeader(event, 'x-real-ip') || 'unknown', + note: 'Dieser Request kommt vom Desktop-Browser, wenn der QR-Code generiert wird' }) + console.log('[DEBUG] User-Agent Analysis:', { + isMobile: /Mobile|Android|iPhone|iPad/i.test(userAgent || ''), + isDesktop: !/Mobile|Android|iPhone|iPad/i.test(userAgent || ''), + browser: userAgent?.substring(0, 100) + }) + console.log('='.repeat(80)) + console.log('') const body = await readBody(event) const name = String(body?.name || '').trim() diff --git a/server/middleware/log-requests.js b/server/middleware/log-requests.js index 8f0d715..7f453ee 100644 --- a/server/middleware/log-requests.js +++ b/server/middleware/log-requests.js @@ -26,16 +26,32 @@ export default defineEventHandler((event) => { if (isPasskeyEndpoint) { const timestamp = new Date().toISOString() + const isMobile = /Mobile|Android|iPhone|iPad/i.test(userAgent || '') + + console.log('') + console.log('─'.repeat(80)) console.log(`[REQUEST] ${timestamp} ${method} ${path}`) console.log(`[REQUEST] Origin: ${origin || 'none'}`) console.log(`[REQUEST] IP: ${ip}`) - console.log(`[REQUEST] User-Agent: ${userAgent?.substring(0, 100) || 'none'}`) + console.log(`[REQUEST] User-Agent: ${userAgent?.substring(0, 150) || 'none'}`) + console.log(`[REQUEST] Is Mobile: ${isMobile ? '✅ JA' : '❌ NEIN'}`) // Spezielle Logs für Cross-Device - if (path.includes('register-passkey')) { - console.log(`[REQUEST] 🔑 PASSKEY REQUEST - ${method} ${path}`) - console.log(`[REQUEST] ⚠️ Wenn dieser Request vom Smartphone kommt, sollte der User-Agent Mobile/Android/iPhone enthalten`) - console.log(`[REQUEST] ⚠️ Wenn dieser Request NICHT kommt, erreicht das Smartphone den Server nicht`) + if (path.includes('register-passkey') && method === 'POST') { + console.log(`[REQUEST] 🔑 PASSKEY REGISTRATION REQUEST`) + if (isMobile) { + console.log(`[REQUEST] ✅ Request kommt vom Smartphone!`) + } else { + console.log(`[REQUEST] ⚠️ Request kommt NICHT vom Smartphone (Desktop-Browser?)`) + } } + + if (path.includes('register-passkey') && method === 'OPTIONS') { + console.log(`[REQUEST] 🔧 OPTIONS Preflight für Passkey Registration`) + console.log(`[REQUEST] ⚠️ Wenn dieser Request vom Smartphone kommt, sollte der User-Agent Mobile/Android/iPhone enthalten`) + } + + console.log('─'.repeat(80)) + console.log('') } })