#!/usr/bin/env node /** * Script zum Abfragen der Benutzer aus der SQLite-Datenbank * Verwendung: node query_users.js */ const Database = require('better-sqlite3'); const path = require('path'); // Datenbank-Pfad - angepasst für Docker-Container const DB_PATH = process.env.DB_PATH || './data/taskmate.db'; try { console.log('Verbinde zur Datenbank:', DB_PATH); // Datenbank öffnen const db = new Database(DB_PATH); // Alle Benutzer abfragen const users = db.prepare(` SELECT id, username, display_name, color, role, email, repositories_base_path, created_at, last_login, failed_attempts, locked_until FROM users ORDER BY id `).all(); console.log('\n=== BENUTZER IN DER DATENBANK ===\n'); if (users.length === 0) { console.log('Keine Benutzer gefunden!'); } else { users.forEach(user => { console.log(`ID: ${user.id}`); console.log(`Benutzername: ${user.username}`); console.log(`Anzeigename: ${user.display_name}`); console.log(`Farbe: ${user.color}`); console.log(`Rolle: ${user.role || 'user'}`); console.log(`E-Mail: ${user.email || 'nicht gesetzt'}`); console.log(`Repository-Basispfad: ${user.repositories_base_path || 'nicht gesetzt'}`); console.log(`Erstellt am: ${user.created_at}`); console.log(`Letzter Login: ${user.last_login || 'noch nie'}`); console.log(`Fehlgeschlagene Versuche: ${user.failed_attempts}`); console.log(`Gesperrt bis: ${user.locked_until || 'nicht gesperrt'}`); console.log('-----------------------------------'); }); console.log(`\nGesamt: ${users.length} Benutzer gefunden`); } // Prüfe auch Login-Audit für weitere Informationen const recentAttempts = db.prepare(` SELECT la.timestamp, la.ip_address, la.success, la.user_agent, u.username FROM login_audit la LEFT JOIN users u ON la.user_id = u.id ORDER BY la.timestamp DESC LIMIT 10 `).all(); if (recentAttempts.length > 0) { console.log('\n=== LETZTE LOGIN-VERSUCHE ===\n'); recentAttempts.forEach(attempt => { console.log(`${attempt.timestamp}: ${attempt.username || 'Unbekannt'} - ${attempt.success ? 'ERFOLGREICH' : 'FEHLGESCHLAGEN'} - IP: ${attempt.ip_address}`); }); } // Datenbank schließen db.close(); } catch (error) { console.error('Fehler beim Abfragen der Datenbank:', error.message); process.exit(1); }