From 1e0b56e7f7b5e660a2662e71c5978ca3c3b24d47 Mon Sep 17 00:00:00 2001 From: romantarkin Date: Wed, 30 Jul 2025 10:09:56 +0500 Subject: [PATCH] register user one start --- auth-service/README.md | 62 +++++++++++++++++++++++++++++++++++++++ auth-service/src/index.js | 48 +++++++++++++++++++++++++++++- 2 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 auth-service/README.md diff --git a/auth-service/README.md b/auth-service/README.md new file mode 100644 index 0000000..2c737d4 --- /dev/null +++ b/auth-service/README.md @@ -0,0 +1,62 @@ +# Auth Service + +Сервис аутентификации для системы управления рекламой. + +## Установка и настройка + +1. Установите зависимости: +```bash +npm install +``` + +2. Создайте файл `.env` в корне проекта со следующими переменными: +```env +# Database configuration +DB_HOST=localhost +DB_PORT=3306 +DB_NAME=auth_service +DB_USER=root +DB_PASSWORD=password + +# JWT configuration +JWT_SECRET=your-secret-key-here + +# Admin configuration (optional) +ADMIN_PASSWORD=admin123 + +# Server configuration +PORT=3000 +``` + +3. Запустите сервис: +```bash +npm start +``` + +## Инициализация базы данных + +При первом запуске сервиса, если таблица пользователей пуста, автоматически создается учетная запись администратора: + +- **Email**: admin@example.com +- **Пароль**: значение из переменной `ADMIN_PASSWORD` или `admin123` по умолчанию +- **Роль**: admin + +**Важно**: После первого входа обязательно измените пароль администратора! + +## API Endpoints + +- `POST /api/auth/login` - Вход в систему +- `GET /api/auth/users` - Получить список пользователей +- `POST /api/auth/users` - Создать пользователя +- `PUT /api/auth/users/:id` - Обновить пользователя +- `DELETE /api/auth/users/:id` - Удалить пользователя + +## Структура проекта + +``` +src/ +├── controllers/ # Контроллеры для обработки запросов +├── models/ # Модели Sequelize +├── routes/ # Маршруты API +└── index.js # Точка входа приложения +``` \ No newline at end of file diff --git a/auth-service/src/index.js b/auth-service/src/index.js index 5359ca6..05ec814 100644 --- a/auth-service/src/index.js +++ b/auth-service/src/index.js @@ -1,8 +1,9 @@ import dotenv from 'dotenv'; dotenv.config(); import express from 'express'; -import { sequelize } from './models/index.js'; +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()); @@ -12,11 +13,56 @@ 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);