import dotenv from 'dotenv'; dotenv.config(); import express from 'express'; import { sequelize, User, Role } from './models/index.js'; import routes from './routes/index.js'; import bcrypt from 'bcrypt'; const app = express(); app.use(express.json()); app.use('/api/auth', routes); app.get('/', (req, res) => { res.send('Auth Service is running'); }); // Функция для инициализации базы данных async function initializeDatabase() { try { // Проверяем, есть ли пользователи в базе данных const userCount = await User.count(); if (userCount === 0) { console.log('База данных пуста. Создаю администратора...'); // Создаем роль администратора, если её нет let adminRole = await Role.findOne({ where: { name: 'admin' } }); if (!adminRole) { adminRole = await Role.create({ name: 'admin', description: 'Администратор системы' }); console.log('Роль администратора создана'); } // Создаем пользователя администратора const adminPassword = process.env.ADMIN_PASSWORD || 'admin123'; const passwordHash = await bcrypt.hash(adminPassword, 10); await User.create({ email: 'admin@example.com', name: 'Администратор', password_hash: passwordHash, role_id: adminRole.id }); console.log('Администратор создан:'); console.log('Email: admin@example.com'); console.log('Пароль:', adminPassword); console.log('Пожалуйста, измените пароль после первого входа!'); } else { console.log(`В базе данных найдено ${userCount} пользователей`); } } catch (error) { console.error('Ошибка при инициализации базы данных:', error); } } (async () => { try { await sequelize.authenticate(); await sequelize.sync({ alter: true }); console.log('Database connected and models synced'); // Инициализируем базу данных await initializeDatabase(); } catch (err) { console.error('Unable to connect to the database:', err); process.exit(1); } })(); const PORT = process.env.PORT || 3000; app.listen(PORT, () => { console.log(`Auth Service listening on port ${PORT}`); });