Files
SkillMate/backend/create-test-user.js
Claude Project Manager 6b9b6d4f20 Initial commit
2025-09-20 21:31:04 +02:00

72 Zeilen
2.1 KiB
JavaScript

const Database = require('better-sqlite3');
const bcryptjs = require('bcryptjs');
const CryptoJS = require('crypto-js');
const crypto = require('crypto');
const path = require('path');
const FIELD_ENCRYPTION_KEY = process.env.FIELD_ENCRYPTION_KEY || 'dev_field_key_change_in_production_32chars_min!';
function encrypt(text) {
if (!text) return null;
try {
return CryptoJS.AES.encrypt(text, FIELD_ENCRYPTION_KEY).toString();
} catch (error) {
console.error('Encryption error:', error);
return text;
}
}
function hashEmail(email) {
if (!email) return null;
return crypto.createHash('sha256').update(email.toLowerCase()).digest('hex');
}
async function createTestUser() {
const dbPath = path.join(__dirname, 'skillmate.dev.db');
console.log(`Opening database at: ${dbPath}`);
const db = new Database(dbPath);
try {
console.log('\n=== Creating Test User ===\n');
const email = 'hendrik.gebhardt@polizei.nrw.de';
const hashedPassword = await bcryptjs.hash('test123', 10);
const encryptedEmail = encrypt(email);
const emailHash = hashEmail(email);
const userId = 'user-' + Date.now();
db.prepare(`
INSERT INTO users (id, username, email, email_hash, password, role, is_active, created_at, updated_at)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
`).run(
userId,
'hendrik.gebhardt',
encryptedEmail,
emailHash,
hashedPassword,
'user',
1,
new Date().toISOString(),
new Date().toISOString()
);
console.log('✓ Test user created successfully!');
console.log('Email:', email);
console.log('Username: hendrik.gebhardt');
console.log('Password: test123');
console.log('Role: user');
// Show all users
const users = db.prepare('SELECT id, username, role, is_active FROM users').all();
console.log('\nAll users in database:');
users.forEach(user => console.log(' -', user));
} catch (error) {
console.error('Error creating test user:', error);
process.exit(1);
} finally {
db.close();
}
}
createTestUser();