mdb-engine 0.5.0__tar.gz → 0.5.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. {mdb_engine-0.5.0/mdb_engine.egg-info → mdb_engine-0.5.1}/PKG-INFO +1 -1
  2. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/csrf.py +4 -1
  3. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/routing/websockets.py +28 -7
  4. {mdb_engine-0.5.0 → mdb_engine-0.5.1/mdb_engine.egg-info}/PKG-INFO +1 -1
  5. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/pyproject.toml +1 -1
  6. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/setup.py +1 -1
  7. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/LICENSE +0 -0
  8. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/MANIFEST.in +0 -0
  9. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/README.md +0 -0
  10. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/README.md +0 -0
  11. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/__init__.py +0 -0
  12. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/ARCHITECTURE.md +0 -0
  13. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/README.md +0 -0
  14. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/__init__.py +0 -0
  15. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/audit.py +0 -0
  16. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/base.py +0 -0
  17. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/casbin_factory.py +0 -0
  18. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/casbin_models.py +0 -0
  19. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/config_defaults.py +0 -0
  20. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/config_helpers.py +0 -0
  21. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/cookie_utils.py +0 -0
  22. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/decorators.py +0 -0
  23. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/dependencies.py +0 -0
  24. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/helpers.py +0 -0
  25. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/integration.py +0 -0
  26. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/jwt.py +0 -0
  27. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/middleware.py +0 -0
  28. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/oso_factory.py +0 -0
  29. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/provider.py +0 -0
  30. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/rate_limiter.py +0 -0
  31. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/restrictions.py +0 -0
  32. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/session_manager.py +0 -0
  33. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/shared_middleware.py +0 -0
  34. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/shared_users.py +0 -0
  35. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/token_lifecycle.py +0 -0
  36. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/token_store.py +0 -0
  37. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/users.py +0 -0
  38. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/auth/utils.py +0 -0
  39. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/__init__.py +0 -0
  40. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/commands/__init__.py +0 -0
  41. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/commands/generate.py +0 -0
  42. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/commands/migrate.py +0 -0
  43. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/commands/show.py +0 -0
  44. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/commands/validate.py +0 -0
  45. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/main.py +0 -0
  46. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/cli/utils.py +0 -0
  47. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/config.py +0 -0
  48. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/constants.py +0 -0
  49. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/README.md +0 -0
  50. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/__init__.py +0 -0
  51. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/app_registration.py +0 -0
  52. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/app_secrets.py +0 -0
  53. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/connection.py +0 -0
  54. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/encryption.py +0 -0
  55. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/engine.py +0 -0
  56. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/index_management.py +0 -0
  57. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/manifest.py +0 -0
  58. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/ray_integration.py +0 -0
  59. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/seeding.py +0 -0
  60. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/service_initialization.py +0 -0
  61. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/core/types.py +0 -0
  62. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/database/README.md +0 -0
  63. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/database/__init__.py +0 -0
  64. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/database/abstraction.py +0 -0
  65. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/database/connection.py +0 -0
  66. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/database/query_validator.py +0 -0
  67. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/database/resource_limiter.py +0 -0
  68. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/database/scoped_wrapper.py +0 -0
  69. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/dependencies.py +0 -0
  70. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/di/__init__.py +0 -0
  71. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/di/container.py +0 -0
  72. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/di/providers.py +0 -0
  73. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/di/scopes.py +0 -0
  74. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/embeddings/README.md +0 -0
  75. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/embeddings/__init__.py +0 -0
  76. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/embeddings/dependencies.py +0 -0
  77. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/embeddings/service.py +0 -0
  78. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/exceptions.py +0 -0
  79. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/indexes/README.md +0 -0
  80. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/indexes/__init__.py +0 -0
  81. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/indexes/helpers.py +0 -0
  82. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/indexes/manager.py +0 -0
  83. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/memory/README.md +0 -0
  84. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/memory/__init__.py +0 -0
  85. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/memory/service.py +0 -0
  86. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/observability/README.md +0 -0
  87. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/observability/__init__.py +0 -0
  88. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/observability/health.py +0 -0
  89. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/observability/logging.py +0 -0
  90. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/observability/metrics.py +0 -0
  91. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/repositories/__init__.py +0 -0
  92. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/repositories/base.py +0 -0
  93. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/repositories/mongo.py +0 -0
  94. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/repositories/unit_of_work.py +0 -0
  95. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/routing/README.md +0 -0
  96. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/routing/__init__.py +0 -0
  97. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/utils/__init__.py +0 -0
  98. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine/utils/mongo.py +0 -0
  99. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine.egg-info/SOURCES.txt +0 -0
  100. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine.egg-info/dependency_links.txt +0 -0
  101. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine.egg-info/entry_points.txt +0 -0
  102. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine.egg-info/requires.txt +0 -0
  103. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/mdb_engine.egg-info/top_level.txt +0 -0
  104. {mdb_engine-0.5.0 → mdb_engine-0.5.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mdb-engine
3
- Version: 0.5.0
3
+ Version: 0.5.1
4
4
  Summary: MongoDB Engine
5
5
  Home-page: https://github.com/ranfysvalle02/mdb-engine
6
6
  Author: Fabian Valle
@@ -315,7 +315,10 @@ class CSRFMiddleware(BaseHTTPMiddleware):
315
315
 
316
316
  # Cookie-based authentication requires CSRF protection
317
317
  # Check if authentication token cookie is present
318
- auth_token_cookie = request.cookies.get("token")
318
+ # Use same cookie name as SharedAuthMiddleware for consistency
319
+ from .shared_middleware import AUTH_COOKIE_NAME
320
+
321
+ auth_token_cookie = request.cookies.get(AUTH_COOKIE_NAME)
319
322
  if auth_token_cookie:
320
323
  # For WebSocket upgrades, CSRF protection relies on:
321
324
  # 1. Origin validation (already done above) - primary defense
@@ -395,13 +395,17 @@ async def authenticate_websocket(
395
395
 
396
396
  try:
397
397
  # Extract token from httpOnly cookie
398
+ # Use same cookie name as SharedAuthMiddleware for consistency
399
+ from ..auth.shared_middleware import AUTH_COOKIE_NAME
400
+
398
401
  cookies = _get_cookies_from_websocket(websocket)
399
- token = cookies.get("token") # Standard auth token cookie name
402
+ token = cookies.get(AUTH_COOKIE_NAME) # Use mdb_auth_token (same as shared middleware)
400
403
 
401
404
  if not token:
402
- logger.warning(
403
- f"No token cookie found for WebSocket connection to app '{app_slug}' "
405
+ logger.error(
406
+ f"No token cookie found for WebSocket connection to app '{app_slug}' "
404
407
  f"(require_auth={require_auth}). "
408
+ f"Available cookies: {list(cookies.keys()) if cookies else 'none'}. "
405
409
  f"Ensure httpOnly cookie is set during authentication."
406
410
  )
407
411
  if require_auth:
@@ -428,8 +432,11 @@ async def authenticate_websocket(
428
432
  f"(method: cookie)"
429
433
  )
430
434
  return user_id, user_email
431
- except (jwt.ExpiredSignatureError, jwt.InvalidTokenError) as decode_error:
432
- logger.error(f"JWT decode error for app '{app_slug}': {decode_error}", exc_info=True)
435
+ except (jwt.ExpiredSignatureError, jwt.InvalidTokenError):
436
+ logger.exception(
437
+ f"❌ JWT decode error for app '{app_slug}'. "
438
+ f"Token present: {bool(token)}, Token length: {len(token) if token else 0}"
439
+ )
433
440
  raise
434
441
 
435
442
  except WebSocketDisconnect:
@@ -689,12 +696,26 @@ def create_websocket_endpoint(
689
696
  # CRITICAL: Authenticate BEFORE accepting connection
690
697
  # This prevents CSRF middleware from rejecting established connections
691
698
  # We can access headers/query_params before accept() is called
699
+
700
+ # Debug: Log cookies before authentication
701
+ try:
702
+ cookies = _get_cookies_from_websocket(websocket)
703
+ cookie_names = list(cookies.keys()) if cookies else []
704
+ logger.info(
705
+ f"🔍 WebSocket cookies for app '{app_slug}': {cookie_names} "
706
+ f"(require_auth={require_auth})"
707
+ )
708
+ except (AttributeError, TypeError, KeyError, RuntimeError) as cookie_error:
709
+ logger.warning(f"Could not extract cookies for debugging: {cookie_error}")
710
+
692
711
  user_id, user_email = await authenticate_websocket(websocket, app_slug, require_auth)
693
712
 
694
713
  # Handle authentication failure
695
714
  if require_auth and not user_id:
696
- logger.warning(
697
- f"WebSocket authentication failed for app '{app_slug}' - rejecting connection"
715
+ logger.error(
716
+ f"WebSocket authentication FAILED for app '{app_slug}' - "
717
+ f"rejecting connection. require_auth={require_auth}, "
718
+ f"user_id={user_id}, user_email={user_email}"
698
719
  )
699
720
  # Reject without accepting - FastAPI will send 403 if accept() not called
700
721
  # We can't call websocket.close() before accept(), so we just return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mdb-engine
3
- Version: 0.5.0
3
+ Version: 0.5.1
4
4
  Summary: MongoDB Engine
5
5
  Home-page: https://github.com/ranfysvalle02/mdb-engine
6
6
  Author: Fabian Valle
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mdb-engine"
7
- version = "0.5.0"
7
+ version = "0.5.1"
8
8
  description = "MongoDB Engine"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -14,7 +14,7 @@ if readme_file.exists():
14
14
 
15
15
  setup(
16
16
  name="mdb-engine",
17
- version="0.5.0",
17
+ version="0.5.1",
18
18
  description="MongoDB Engine",
19
19
  long_description=long_description,
20
20
  long_description_content_type="text/markdown",
File without changes
File without changes
File without changes
File without changes