Some checks failed
Deploy on push / deploy (push) Failing after 5s
### 🔐 Улучшенная аутентификация для микросервисов #### ✨ Новые возможности - **Универсальная аутентификация**: Добавлена функция `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 режим) - **Множественные форматы**: Поддержка различных способов передачи токенов
43 lines
1.2 KiB
TOML
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"
|