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