identity-plan-kit 0.3.3__tar.gz → 0.3.4__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.
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/PKG-INFO +1 -1
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/pyproject.toml +2 -2
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/handlers/oauth_routes.py +7 -1
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/uv.lock +1 -1
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/.gitignore +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/Makefile +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/README.md +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/alembic/env.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/alembic/script.py.mako +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/alembic/versions/20250124_000000_initial_schema.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/alembic/versions/20250127_000000_add_password_hash.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/alembic.ini +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/integration/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/integration/fastapi_integration.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/integration/sample_alembic_env.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/integration/webhook_integration.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/playing/admin_usage.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/playing/basic_usage.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/playing/custom_error_formats.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/playing/extending_models.html +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/playing/extension_example.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/prod/.env.production.example +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/prod/Dockerfile +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/prod/docker-compose.yml +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/prod/nginx.conf +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/prod/production_setup.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/prod/prometheus.yml +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/README.md +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/config.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/locustfile.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/test_auth.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/test_database_stress.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/test_mixed_scenarios.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/test_plans_quota.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/test_quota_direct.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/test_rbac_cache.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/loadtests/utils.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/admin/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/admin/auth.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/admin/views.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dependencies.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/domain/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/domain/entities.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/domain/exceptions.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dto/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dto/requests.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dto/responses.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/handlers/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/models/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/models/refresh_token.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/models/user.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/models/user_provider.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/repositories/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/repositories/token_repo.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/repositories/user_repo.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/services/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/services/auth_service.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/services/oauth_service.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/uow.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/cli.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/config.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/kit.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/migrations.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/cache/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/cache/plan_cache.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/cache/user_plan_cache.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dependencies.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/domain/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/domain/entities.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/domain/exceptions.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dto/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dto/responses.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dto/usage.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/handlers/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/handlers/plan_routes.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/feature.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/feature_usage.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/plan.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/plan_limit.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/plan_permission.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/user_plan.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/repositories/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/repositories/plan_repo.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/repositories/usage_repo.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/services/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/services/plan_service.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/uow.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/cache/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/cache/permission_cache.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/dependencies.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/domain/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/domain/entities.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/domain/exceptions.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/models/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/models/permission.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/models/role.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/models/role_permission.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/repositories/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/repositories/rbac_repo.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/services/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/services/rbac_service.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/uow.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/README.md +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/audit.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/circuit_breaker.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/cleanup_scheduler.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/database.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/error_formatter.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/exception_handlers.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/exceptions.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/graceful_shutdown.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/health.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/http_utils.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/lockout.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/logging.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/metrics.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/models.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/rate_limiter.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/request_id.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/schemas.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/security.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/state_store.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/uow.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/uuid7.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_auth_service.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_circuit_breaker.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_csrf_state.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_dependencies.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_domain_entities.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_http_utils.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_lockout.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_lockout_concurrent.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_oauth_service_resilience.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_security_comprehensive.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_token_security.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/conftest.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/conftest.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_concurrent_limit_merge.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_concurrent_plan_operations.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_concurrent_token_operations.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_concurrent_user_creation.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_concurrent_user_deactivation.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_limit_boundaries.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_plan_cache_race.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_quota_concurrency.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_token_cleanup.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_token_repository.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_usage_periods.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_user_repository.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/plans/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/plans/test_dependencies.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/plans/test_domain_entities.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/plans/test_period_edge_cases.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/plans/test_plan_cache_concurrent.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/plans/test_plan_service.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/rbac/__init__.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/rbac/test_permission_cache.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/rbac/test_permission_cache_concurrent.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/rbac/test_rbac_cache_stampede.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/rbac/test_rbac_service.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_audit_pii_masking.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_circuit_breaker_concurrent.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_cleanup_scheduler_concurrent.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_config_validation.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_exception_handlers.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_http_utils_security.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_rate_limiter.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_rate_limiter_concurrent.py +0 -0
- {identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_state_store_concurrent.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "identity-plan-kit"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.4"
|
|
4
4
|
description = "Modern FastAPI library for authentication, RBAC, subscription plans, and usage tracking"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -140,7 +140,7 @@ testpaths = ["tests"]
|
|
|
140
140
|
addopts = "-v --tb=short"
|
|
141
141
|
|
|
142
142
|
[tool.bumpversion]
|
|
143
|
-
current_version = "0.3.
|
|
143
|
+
current_version = "0.3.4"
|
|
144
144
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
145
145
|
serialize = ["{major}.{minor}.{patch}"]
|
|
146
146
|
tag = true
|
|
@@ -48,7 +48,9 @@ def create_auth_router(config: IdentityPlanKitConfig) -> APIRouter: # noqa: PLR
|
|
|
48
48
|
router = APIRouter(tags=["auth"])
|
|
49
49
|
|
|
50
50
|
rate_limiter = get_rate_limiter()
|
|
51
|
-
state_store
|
|
51
|
+
# NOTE: Don't capture state_store here - get it lazily inside each endpoint
|
|
52
|
+
# This ensures Redis is connected before the store is used
|
|
53
|
+
# (setup() runs before startup() which connects to Redis)
|
|
52
54
|
|
|
53
55
|
@router.get(
|
|
54
56
|
"/google/login",
|
|
@@ -70,6 +72,8 @@ def create_auth_router(config: IdentityPlanKitConfig) -> APIRouter: # noqa: PLR
|
|
|
70
72
|
user_agent_hash = hashlib.sha256(user_agent.encode()).hexdigest()[:16]
|
|
71
73
|
nonce = secrets.token_urlsafe(8)
|
|
72
74
|
|
|
75
|
+
# Get state store lazily to ensure Redis is connected after startup()
|
|
76
|
+
state_store = get_state_store()
|
|
73
77
|
await state_store.set(
|
|
74
78
|
f"oauth_state:{state}",
|
|
75
79
|
{
|
|
@@ -126,6 +130,8 @@ def create_auth_router(config: IdentityPlanKitConfig) -> APIRouter: # noqa: PLR
|
|
|
126
130
|
)
|
|
127
131
|
|
|
128
132
|
# Atomically get and delete state (one-time use)
|
|
133
|
+
# Get state store lazily to ensure Redis is connected after startup()
|
|
134
|
+
state_store = get_state_store()
|
|
129
135
|
stored_state = await state_store.get_and_delete(f"oauth_state:{state}")
|
|
130
136
|
if stored_state is None:
|
|
131
137
|
# SECURITY FIX: Add diagnostic info for multi-instance deployments
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/integration/fastapi_integration.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/integration/sample_alembic_env.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/integration/webhook_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/examples/playing/custom_error_formats.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dto/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dto/requests.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/dto/responses.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/handlers/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/models/user.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/auth/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/cache/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/cache/plan_cache.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dto/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dto/responses.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/dto/usage.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/handlers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/feature.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/plan.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/plan_limit.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/models/user_plan.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/plans/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/cache/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/models/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/models/permission.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/models/role.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/rbac/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/circuit_breaker.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/database.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/error_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/http_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/rate_limiter.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/request_id.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/security.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/src/identity_plan_kit/shared/state_store.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_oauth_service_resilience.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/auth/test_security_comprehensive.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_concurrent_limit_merge.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_limit_boundaries.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_plan_cache_race.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_quota_concurrency.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_token_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/integration/test_user_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/plans/test_plan_cache_concurrent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/rbac/test_permission_cache_concurrent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_circuit_breaker_concurrent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_http_utils_security.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_rate_limiter_concurrent.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.3.3 → identity_plan_kit-0.3.4}/tests/shared/test_state_store_concurrent.py
RENAMED
|
File without changes
|