register user one start
This commit is contained in:
parent
9fa3e76810
commit
1e0b56e7f7
62
auth-service/README.md
Normal file
62
auth-service/README.md
Normal file
@ -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 # Точка входа приложения
|
||||||
|
```
|
||||||
@ -1,8 +1,9 @@
|
|||||||
import dotenv from 'dotenv';
|
import dotenv from 'dotenv';
|
||||||
dotenv.config();
|
dotenv.config();
|
||||||
import express from 'express';
|
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 routes from './routes/index.js';
|
||||||
|
import bcrypt from 'bcrypt';
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
app.use(express.json());
|
app.use(express.json());
|
||||||
@ -12,11 +13,56 @@ app.get('/', (req, res) => {
|
|||||||
res.send('Auth Service is running');
|
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 () => {
|
(async () => {
|
||||||
try {
|
try {
|
||||||
await sequelize.authenticate();
|
await sequelize.authenticate();
|
||||||
await sequelize.sync({ alter: true });
|
await sequelize.sync({ alter: true });
|
||||||
console.log('Database connected and models synced');
|
console.log('Database connected and models synced');
|
||||||
|
|
||||||
|
// Инициализируем базу данных
|
||||||
|
await initializeDatabase();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error('Unable to connect to the database:', err);
|
console.error('Unable to connect to the database:', err);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user