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

107 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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