Files
Star-wars-card-game/AUTH_README.md
2026-01-28 00:49:37 +03:00

3.7 KiB
Raw Permalink Blame History

Система авторизации и 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. Установите переменные окружения:
    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:

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)

Использование:

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