Migrated to ruff for faster, modern code formatting and linting: Configuration changes: - pyproject.toml: Added ruff 0.8.6, removed black/flake8 - Configured ruff with black-compatible formatting (88 chars) - Enabled comprehensive linting rules (pycodestyle, pyflakes, isort, pyupgrade, bugbear, comprehensions, simplify, return) - Updated CLAUDE.md: Changed code quality commands to use ruff Code improvements (490 auto-fixes): - Modernized type hints: List[T] → list[T], Dict[K,V] → dict[K,V], Optional[T] → T | None - Sorted all imports (isort integration) - Removed unused imports - Fixed whitespace issues - Reformatted 38 files for consistency Bug fixes: - app/core/play_resolver.py: Fixed type hint bug (any → Any) - tests/unit/core/test_runner_advancement.py: Removed obsolete random mock Testing: - All 739 unit tests passing (100%) - No regressions introduced 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
48 lines
1018 B
Python
48 lines
1018 B
Python
import logging
|
|
from typing import Any
|
|
|
|
import pendulum
|
|
from jose import JWTError, jwt
|
|
|
|
from app.config import get_settings
|
|
|
|
logger = logging.getLogger(f"{__name__}.auth")
|
|
|
|
settings = get_settings()
|
|
|
|
|
|
def create_token(user_data: dict[str, Any]) -> str:
|
|
"""
|
|
Create JWT token for user
|
|
|
|
Args:
|
|
user_data: User information to encode in token
|
|
|
|
Returns:
|
|
JWT token string
|
|
"""
|
|
payload = {**user_data, "exp": pendulum.now("UTC").add(days=7).int_timestamp}
|
|
token = jwt.encode(payload, settings.secret_key, algorithm="HS256")
|
|
return token
|
|
|
|
|
|
def verify_token(token: str) -> dict[str, Any]:
|
|
"""
|
|
Verify and decode JWT token
|
|
|
|
Args:
|
|
token: JWT token string
|
|
|
|
Returns:
|
|
Decoded token payload
|
|
|
|
Raises:
|
|
JWTError: If token is invalid or expired
|
|
"""
|
|
try:
|
|
payload = jwt.decode(token, settings.secret_key, algorithms=["HS256"])
|
|
return payload
|
|
except JWTError as e:
|
|
logger.warning(f"Invalid token: {e}")
|
|
raise
|