# Система авторизации и 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** в правом верхнем углу лобби
- **Информация о пользователе** отображается в левом верхнем углу (если авторизован)
