Files
quoter/Cargo.toml
Untone 91e5f5dac4
Some checks failed
Deploy on push / deploy (push) Failing after 5s
[0.6.5] - 2025-09-21
### 🔐 Улучшенная аутентификация для микросервисов

####  Новые возможности
- **Универсальная аутентификация**: Добавлена функция `authenticate_request()` для всех handlers
- **Множественные источники токенов**: Поддержка Bearer, X-Session-Token, Cookie
- **Redis сессии**: Интеграция с Redis для проверки активных сессий
- **Безопасная валидация**: Функция `secure_token_validation()` с проверкой TTL и обновлением активности
- **Извлечение токенов**: Универсальная функция `extract_token_from_request()` для всех типов запросов

#### 🧪 Тестирование
- **14 новых тестов**: Полное покрытие новой логики аутентификации
- **Производительность**: Тесты производительности (< 1ms на операцию)
- **Безопасность**: Тесты защиты от подозрительных токенов
- **Граничные случаи**: Тестирование истекших токенов, неверных форматов
- **Интеграция**: Тесты с мокированным Redis

#### ♻️ Рефакторинг (DRY & YAGNI)
- **Устранение дублирования**: Объединена логика аутентификации из upload.rs и user.rs
- **Удаление устаревшего кода**: Убраны `extract_user_id_from_token`, `validate_token`, `get_user_by_token`
- **Очистка констант**: Удалены неиспользуемые `MAX_TOKEN_LENGTH`, `MIN_TOKEN_LENGTH`
- **Упрощение**: Заменена `extract_and_validate_token` на `authenticate_request`

#### ��️ Архитектурные улучшения
- **Библиотечная цель**: Добавлена `lib.rs` для тестирования модулей
- **Модульность**: Четкое разделение ответственности между модулями
- **Единообразие**: Все handlers теперь используют одинаковую логику аутентификации

#### 📋 Совместимость
- **Обратная совместимость**: Все существующие API endpoints работают без изменений
- **Graceful fallback**: Работа без Redis (JWT-only режим)
- **Множественные форматы**: Поддержка различных способов передачи токенов
2025-09-22 01:15:35 +03:00

43 lines
1.2 KiB
TOML

[package]
name = "quoter"
version = "0.6.5"
edition = "2024"
[dependencies]
futures = "0.3.30"
serde_json = "1.0.145"
actix-web = "4.11.0"
actix-cors = "0.7.0"
reqwest = { version = "0.12.23", features = ["json"] }
sentry = { version = "0.42", features = ["tokio"] }
uuid = { version = "1.18.0", features = ["v4"] }
redis = { version = "0.32.5", features = ["tokio-comp"] }
tokio = { version = "1.47.1", features = ["rt-multi-thread", "macros", "fs", "net"] }
serde = { version = "1.0.226", features = ["derive"] }
sentry-actix = { version = "0.42", default-features = false }
aws-sdk-s3 = { version = "1.106.0", default-features = false, features = ["rt-tokio", "rustls"] }
image = { version = "0.25.8", default-features = false, features = ["jpeg", "png", "webp", "tiff"] }
mime_guess = "2.0.5"
md5 = "0.8.0"
url = "2.5.7"
aws-config = { version = "1.8.6", default-features = false, features = ["rt-tokio", "rustls"] }
actix-multipart = "0.7.2"
log = "0.4.28"
env_logger = "0.11.8"
actix = "0.13.5"
# libheif-sys = "1.12.0"
once_cell = "1.21.3"
kamadak-exif = "0.6.1"
infer = "0.19.0"
chrono = { version = "0.4.42", features = ["serde"] }
jsonwebtoken = "9.2.0"
base64 = "0.22.1"
[[bin]]
name = "quoter"
path = "./src/main.rs"
[lib]
name = "quoter"
path = "./src/lib.rs"