With DataBaseREdis
This commit is contained in:
106
AUTH_README.md
Normal file
106
AUTH_README.md
Normal file
@ -0,0 +1,106 @@
|
||||
# Система авторизации и Leaderboard
|
||||
|
||||
## Описание
|
||||
|
||||
Игра теперь поддерживает систему авторизации/регистрации и глобальный рейтинг (Leaderboard) с использованием Redis в качестве базы данных.
|
||||
|
||||
## Режимы работы
|
||||
|
||||
### 1. Без Redis (для тестов)
|
||||
По умолчанию приложение работает **без Redis**. Это позволяет тестировать игру без необходимости настройки базы данных.
|
||||
|
||||
**Как запустить без Redis:**
|
||||
- Просто запустите `node server.js` или `npm start`
|
||||
- Или установите переменную окружения: `USE_REDIS=false`
|
||||
|
||||
### 2. С Redis (для продакшена)
|
||||
Для использования авторизации, регистрации и Leaderboard необходимо запустить Redis.
|
||||
|
||||
**Как запустить с Redis:**
|
||||
|
||||
#### Локально:
|
||||
1. Установите Redis: `sudo apt-get install redis-server` (Debian/Ubuntu)
|
||||
2. Запустите Redis: `redis-server`
|
||||
3. Установите переменные окружения:
|
||||
```bash
|
||||
export USE_REDIS=true
|
||||
export REDIS_URL=redis://localhost:6379
|
||||
```
|
||||
4. Запустите сервер: `node server.js`
|
||||
|
||||
#### Docker:
|
||||
1. Используйте `docker-compose.yml` - Redis уже настроен
|
||||
2. Запустите: `docker compose up -d`
|
||||
3. Redis автоматически подключится
|
||||
|
||||
## Переменные окружения
|
||||
|
||||
Создайте файл `.env` на основе `.env.example`:
|
||||
|
||||
```bash
|
||||
USE_REDIS=true # Использовать Redis (true/false)
|
||||
REDIS_URL=redis://redis:6379 # URL Redis (для Docker: redis://redis:6379)
|
||||
SESSION_SECRET=your-secret-key # Секретный ключ для сессий
|
||||
PORT=3542 # Порт сервера
|
||||
NODE_ENV=production # Окружение
|
||||
```
|
||||
|
||||
## Deploy.sh
|
||||
|
||||
Скрипт `deploy.sh` автоматически:
|
||||
1. Останавливает Redis контейнер
|
||||
2. Обновляет код из Git
|
||||
3. Останавливает все контейнеры
|
||||
4. Собирает образы
|
||||
5. Запускает контейнеры (включая Redis)
|
||||
|
||||
**Использование:**
|
||||
```bash
|
||||
chmod +x deploy.sh
|
||||
./deploy.sh
|
||||
```
|
||||
|
||||
## API Endpoints
|
||||
|
||||
### Регистрация
|
||||
```
|
||||
POST /api/register
|
||||
Body: { username: string, password: string, email?: string }
|
||||
```
|
||||
|
||||
### Вход
|
||||
```
|
||||
POST /api/login
|
||||
Body: { username: string, password: string }
|
||||
```
|
||||
|
||||
### Выход
|
||||
```
|
||||
POST /api/logout
|
||||
```
|
||||
|
||||
### Информация о пользователе
|
||||
```
|
||||
GET /api/user
|
||||
```
|
||||
|
||||
### Leaderboard
|
||||
```
|
||||
GET /api/leaderboard
|
||||
Response: { leaderboard: [{ username, gamesPlayed, gamesWon, winRate, totalDamage, totalHealing }] }
|
||||
```
|
||||
|
||||
## Статистика игроков
|
||||
|
||||
Статистика автоматически обновляется при окончании игры:
|
||||
- `gamesPlayed` - количество сыгранных игр
|
||||
- `gamesWon` - количество побед
|
||||
- `totalDamage` - общий нанесенный урон
|
||||
- `totalHealing` - общее восстановленное здоровье
|
||||
|
||||
## UI
|
||||
|
||||
- **Модальное окно авторизации** появляется при первом запуске
|
||||
- Можно продолжить без авторизации (кнопка "Продолжить без авторизации")
|
||||
- **Кнопка Leaderboard** в правом верхнем углу лобби
|
||||
- **Информация о пользователе** отображается в левом верхнем углу (если авторизован)
|
||||
Reference in New Issue
Block a user