Fix jwt-token

This commit is contained in:
2025-08-17 06:01:45 +02:00
parent b7ba123f94
commit 8a5978438e
2 changed files with 77 additions and 1 deletions

View File

@@ -12,6 +12,7 @@ const { sequelize } = require('./models');
const routes = require('./routes'); const routes = require('./routes');
const { initializeSocketHandlers } = require('./services/socketService'); const { initializeSocketHandlers } = require('./services/socketService');
const AlertService = require('./services/alertService'); const AlertService = require('./services/alertService');
const seedDatabase = require('./seedDatabase');
const errorHandler = require('./middleware/errorHandler'); const errorHandler = require('./middleware/errorHandler');
const app = express(); const app = express();
@@ -76,9 +77,23 @@ async function startServer() {
await sequelize.authenticate(); await sequelize.authenticate();
console.log('Database connected successfully.'); console.log('Database connected successfully.');
if (process.env.NODE_ENV !== 'production') { // Always sync database in containerized environments or development
// Check if tables exist before syncing
try {
await sequelize.sync({ alter: true }); await sequelize.sync({ alter: true });
console.log('Database synchronized.'); console.log('Database synchronized.');
// Seed database with initial data
await seedDatabase();
} catch (syncError) {
console.error('Database sync error:', syncError);
// If sync fails, try force sync (this will drop and recreate tables)
console.log('Attempting force sync...');
await sequelize.sync({ force: false, alter: true });
console.log('Database force synchronized.');
// Seed database with initial data
await seedDatabase();
} }
server.listen(PORT, () => { server.listen(PORT, () => {

61
server/seedDatabase.js Normal file
View File

@@ -0,0 +1,61 @@
const bcrypt = require('bcryptjs');
const { User, Device } = require('./models');
async function seedDatabase() {
try {
console.log('🌱 Seeding database...');
// Check if admin user exists
const existingAdmin = await User.findOne({ where: { username: 'admin' } });
if (!existingAdmin) {
// Create default admin user
const adminPassword = await bcrypt.hash('admin123', 10);
await User.create({
username: 'admin',
email: 'admin@dronedetection.local',
password_hash: adminPassword,
first_name: 'System',
last_name: 'Administrator',
role: 'admin',
is_active: true,
sms_alerts_enabled: false,
email_alerts_enabled: false,
timezone: 'Europe/Stockholm'
});
console.log('✅ Admin user created (username: admin, password: admin123)');
} else {
console.log('✅ Admin user already exists');
}
// Create a sample device if none exist
const deviceCount = await Device.count();
if (deviceCount === 0) {
await Device.create({
device_id: 1001,
name: 'Drone Detector Alpha',
location: 'Stockholm Central',
geo_lat: 59.3293,
geo_lon: 18.0686,
is_active: true,
detection_range: 15000, // 15km
frequency_bands: ['2.4GHz', '5.8GHz'],
device_type: 'RF_SCANNER',
last_heartbeat: new Date()
});
console.log('✅ Sample device created');
} else {
console.log('✅ Devices already exist');
}
console.log('🌱 Database seeding completed');
} catch (error) {
console.error('❌ Database seeding failed:', error);
throw error;
}
}
module.exports = seedDatabase;