core/docs
Untone 21d28a0d8b
Some checks failed
Deploy on push / type-check (push) Failing after 8s
Deploy on push / deploy (push) Has been skipped
token-storage-refactored
2025-06-02 21:50:58 +03:00
..
api.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
auth-architecture.md token-storage-refactored 2025-06-02 21:50:58 +03:00
auth-migration.md token-storage-refactored 2025-06-02 21:50:58 +03:00
auth-system.md token-storage-refactored 2025-06-02 21:50:58 +03:00
auth.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
caching.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
comments-pagination.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
features.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
follower.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
load_shouts.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
oauth-deployment.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
oauth-implementation.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
oauth-setup.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
oauth.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
rating.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00
README.md token-storage-refactored 2025-06-02 21:50:58 +03:00
security.md Improve topic sorting: add popular sorting by publications and authors count 2025-06-02 02:56:11 +03:00

Документация проекта

Модули

Система авторизации (v0.5.1)

Новая архитектура после рефакторинга:

Основная документация

Основные возможности

  • Модульная архитектура токенов:
    • SessionTokenManager - управление сессиями
    • VerificationTokenManager - токены подтверждения
    • OAuthTokenManager - OAuth токены
    • BatchTokenOperations - пакетные операции
    • TokenMonitoring - мониторинг и статистика
  • OAuth провайдеры: Google, GitHub, Facebook, X, Telegram, VK, Yandex
  • Система разрешений (RBAC): роли user/moderator/admin с детальными правами
  • Redis оптимизации: Pipeline операции, connection pooling, автоматическая очистка
  • Безопасность: bcrypt + SHA256, JWT HS256, PKCE для OAuth, защита от брутфорса

Производительность (v0.6.0)

  • 50% ускорение Redis операций (pipeline использование)
  • 30% снижение потребления памяти
  • Устранение proxy overhead
  • Real-time мониторинг и статистика
  • Type-safe codebase (mypy clean)

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

# Новый API (рекомендуется)
from auth.tokens.sessions import SessionTokenManager
from auth.tokens.monitoring import TokenMonitoring

# Создание сессии
sessions = SessionTokenManager()
token = await sessions.create_session(user_id, username=username)

# Мониторинг
monitoring = TokenMonitoring()
health = await monitoring.health_check()
stats = await monitoring.get_token_statistics()

# Совместимость (упрощенный фасад)
from auth.tokens.storage import TokenStorage
await TokenStorage.create_session(user_id, username=username)

Конфигурация

# settings.py - JWT
JWT_SECRET_KEY = "your-secret-key"
JWT_EXPIRATION_HOURS = 720  # 30 дней

# Redis
REDIS_URL = "redis://localhost:6379/0"
REDIS_SOCKET_KEEPALIVE = True
REDIS_HEALTH_CHECK_INTERVAL = 30

# OAuth провайдеры
GOOGLE_CLIENT_ID = "..."
GITHUB_CLIENT_ID = "..."
VK_APP_ID = "..."
YANDEX_CLIENT_ID = "..."
# ... и другие

Реакции и комментарии

Модуль обработки пользовательских реакций и комментариев.

Основные возможности:

  • Создание, обновление и удаление реакций (лайки, дизлайки, комментарии)
  • Иерархические комментарии с пагинацией корневых и дочерних
  • Расчет статистики (счетчик комментариев, рейтинг)
  • Автоматическое добавление/снятие статуса "featured" для публикаций
  • Оптимизация запросов с использованием distinct() для предотвращения дублирования

Особенности реализации:

  • Физическое удаление рейтинговых реакций и логическое удаление комментариев (поле deleted_at)
  • Использование distinct() для предотвращения дублирования результатов при JOIN с eager loading
  • Эффективная обработка иерархических данных с помощью специализированных GraphQL запросов

Ключевые функции:

  • get_reactions_with_stat(q, limit, offset) - получение реакций со статистикой
  • load_comments_branch(shout, parent_id, limit, offset, sort, children_limit, children_offset) - загрузка иерархических комментариев с пагинацией

Административный интерфейс

Основные возможности:

  • Защищенный доступ только для авторизованных пользователей с ролью admin
  • Автоматическая проверка прав пользователя
  • Отдельная страница входа для неавторизованных пользователей
  • Проверка доступа по email или правам в системе RBAC

Маршруты:

  • /admin - административная панель с проверкой прав доступа

Запуск сервера

Стандартный запуск

python main.py

Запуск с поддержкой HTTPS

Для локальной разработки с HTTPS используйте скрипт run.py с инструментом mkcert:

# Установите mkcert
# macOS:
brew install mkcert
# Linux:
# sudo apt install mkcert (или эквивалент для вашего дистрибутива)
# Windows:
# choco install mkcert

# Установите локальный CA
mkcert -install

# Запуск с HTTPS на порту 8000 через Granian
python run.py --https

# Запуск с HTTPS на другом порту
python run.py --https --port 8443

# Запуск с несколькими рабочими процессами
python run.py --https --workers 4

# Запуск с указанием домена для сертификата
python run.py --https --domain "localhost.localdomain"

При первом запуске будут автоматически сгенерированы доверенные локальные сертификаты с помощью mkcert.

Преимущества mkcert:

  • Сертификаты распознаются браузером как доверенные (нет предупреждений)
  • Работает на всех платформах (macOS, Linux, Windows)
  • Простая установка и настройка