From 355ead1e946a918e714fe0d9a04c43ce406b0136 Mon Sep 17 00:00:00 2001 From: Dicken Date: Sat, 13 Jun 2026 12:49:21 +0200 Subject: [PATCH] debug: try/catch in GET /, expires_at check in debug endpoint --- backend/src/tools/dateien/public-share.js | 37 ++++++++++++++++------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/backend/src/tools/dateien/public-share.js b/backend/src/tools/dateien/public-share.js index 383e6dc..8af11f0 100644 --- a/backend/src/tools/dateien/public-share.js +++ b/backend/src/tools/dateien/public-share.js @@ -10,16 +10,23 @@ function generateToken() { return crypto.randomBytes(24).toString('base64url'); // GET / – eigene Shares auflisten router.get('/', authenticate, (req, res) => { - const shares = db.prepare(` - SELECT s.*, f.name as file_name, f.size as file_size, - fo.name as folder_name - FROM public_file_shares s - LEFT JOIN files f ON f.id = s.file_id - LEFT JOIN folders fo ON fo.id = s.folder_id - WHERE s.user_id = ? - ORDER BY s.created_at DESC - `).all(req.user.id); - res.json({ shares }); + try { + const shares = db.prepare(` + SELECT s.id, s.token, s.user_id, s.file_id, s.folder_id, s.label, + s.password_hash, s.expires_at, s.created_at, s.download_count, + f.name as file_name, f.size as file_size, + fo.name as folder_name + FROM public_file_shares s + LEFT JOIN files f ON f.id = s.file_id + LEFT JOIN folders fo ON fo.id = s.folder_id + WHERE s.user_id = ? + ORDER BY s.created_at DESC + `).all(req.user.id); + res.json({ shares }); + } catch(e) { + console.error('[public-shares GET]', e.message); + res.status(500).json({ error: e.message }); + } }); // POST / – neuen Share erstellen @@ -66,7 +73,15 @@ router.get('/debug-table', (req, res) => { const count = exists ? db.prepare('SELECT COUNT(*) as n FROM public_file_shares').get() : null; const cols = exists ? db.pragma('table_info(public_file_shares)').map(c=>c.name) : []; const sample = exists ? db.prepare('SELECT id, token, user_id, file_id, folder_id, expires_at, download_count FROM public_file_shares LIMIT 5').all() : []; - res.json({ exists: !!exists, count: count?.n, cols, sample }); + // Test: ersten Token direkt abfragen wie public endpoint es tut + let publicTest = null; + if (sample.length > 0) { + const t = sample[0].token; + const s = db.prepare('SELECT s.*, f.name as file_name, fo.name as folder_name FROM public_file_shares s LEFT JOIN files f ON f.id = s.file_id LEFT JOIN folders fo ON fo.id = s.folder_id WHERE s.token=?').get(t); + const now = Math.floor(Date.now()/1000); + publicTest = { token: t, expires_at: s?.expires_at, now, isExpired: s?.expires_at < now, typeof_expires: typeof s?.expires_at }; + } + res.json({ exists: !!exists, count: count?.n, cols, sample, publicTest }); } catch(e) { res.status(500).json({ error: e.message }); } });