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';
|
||||
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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user