identity-plan-kit 0.2.2__tar.gz → 0.2.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.2.2 → identity_plan_kit-0.2.4}/PKG-INFO +1 -1
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/pyproject.toml +2 -2
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/admin/views.py +18 -16
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/uv.lock +1 -1
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/.gitignore +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/Makefile +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/README.md +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/alembic/env.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/alembic/script.py.mako +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/alembic/versions/20250124_000000_initial_schema.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/alembic/versions/20250127_000000_add_password_hash.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/alembic.ini +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/integration/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/integration/fastapi_integration.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/integration/sample_alembic_env.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/integration/webhook_integration.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/playing/admin_usage.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/playing/basic_usage.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/playing/custom_error_formats.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/playing/extending_models.html +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/playing/extension_example.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/prod/.env.production.example +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/prod/Dockerfile +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/prod/docker-compose.yml +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/prod/nginx.conf +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/prod/production_setup.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/prod/prometheus.yml +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/README.md +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/config.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/locustfile.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/test_auth.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/test_database_stress.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/test_mixed_scenarios.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/test_plans_quota.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/test_quota_direct.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/test_rbac_cache.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/loadtests/utils.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/admin/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/admin/auth.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dependencies.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/domain/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/domain/entities.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/domain/exceptions.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dto/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dto/requests.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dto/responses.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/handlers/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/handlers/oauth_routes.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/models/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/models/refresh_token.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/models/user.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/models/user_provider.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/repositories/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/repositories/token_repo.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/repositories/user_repo.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/services/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/services/auth_service.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/services/oauth_service.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/uow.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/cli.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/config.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/kit.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/migrations.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/cache/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/cache/plan_cache.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dependencies.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/domain/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/domain/entities.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/domain/exceptions.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dto/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dto/responses.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dto/usage.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/handlers/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/handlers/plan_routes.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/feature.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/feature_usage.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/plan.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/plan_limit.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/plan_permission.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/user_plan.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/repositories/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/repositories/plan_repo.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/repositories/usage_repo.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/services/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/services/plan_service.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/uow.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/cache/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/cache/permission_cache.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/dependencies.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/domain/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/domain/entities.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/domain/exceptions.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/models/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/models/permission.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/models/role.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/models/role_permission.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/repositories/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/repositories/rbac_repo.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/services/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/services/rbac_service.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/uow.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/audit.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/circuit_breaker.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/cleanup_scheduler.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/database.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/error_formatter.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/exception_handlers.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/exceptions.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/graceful_shutdown.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/health.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/http_utils.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/lockout.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/logging.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/metrics.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/models.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/rate_limiter.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/request_id.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/schemas.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/security.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/state_store.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/uow.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/uuid7.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_auth_service.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_circuit_breaker.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_csrf_state.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_dependencies.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_domain_entities.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_http_utils.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_lockout.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_lockout_concurrent.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_oauth_service_resilience.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_security_comprehensive.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_token_security.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/conftest.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/conftest.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_concurrent_plan_operations.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_concurrent_token_operations.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_concurrent_user_creation.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_limit_boundaries.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_quota_concurrency.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_token_cleanup.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_token_repository.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_usage_periods.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_user_repository.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/plans/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/plans/test_domain_entities.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/plans/test_period_edge_cases.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/plans/test_plan_cache_concurrent.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/plans/test_plan_service.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/rbac/__init__.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/rbac/test_permission_cache.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/rbac/test_permission_cache_concurrent.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/rbac/test_rbac_cache_stampede.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/rbac/test_rbac_service.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_audit_pii_masking.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_circuit_breaker_concurrent.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_cleanup_scheduler_concurrent.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_config_validation.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_http_utils_security.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_rate_limiter.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_rate_limiter_concurrent.py +0 -0
- {identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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.2.
|
|
3
|
+
version = "0.2.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.2.
|
|
143
|
+
current_version = "0.2.4"
|
|
144
144
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
145
145
|
serialize = ["{major}.{minor}.{patch}"]
|
|
146
146
|
tag = true
|
|
@@ -131,24 +131,19 @@ class BaseAdminView(ModelView):
|
|
|
131
131
|
|
|
132
132
|
def _get_auth_backend(self, request: Request) -> Any | None:
|
|
133
133
|
"""Get the authentication backend from request."""
|
|
134
|
-
#
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
has_state=True,
|
|
141
|
-
admin_auth_found=admin_auth is not None,
|
|
142
|
-
state_attrs=list(vars(request.app.state).keys()) if hasattr(request.app.state, "__dict__") else "no __dict__",
|
|
143
|
-
)
|
|
134
|
+
# SQLAdmin mounts as a sub-application, so request.app is the Admin's app,
|
|
135
|
+
# not the FastAPI app. We need to get the auth backend from the Admin instance.
|
|
136
|
+
# The Admin stores authentication_backend as an attribute.
|
|
137
|
+
if hasattr(request, "app"):
|
|
138
|
+
# Try to get from Admin's authentication_backend (preferred)
|
|
139
|
+
admin_auth = getattr(request.app, "authentication_backend", None)
|
|
144
140
|
if admin_auth:
|
|
145
141
|
return admin_auth
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
"
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
)
|
|
142
|
+
# Fallback: try app.state (for backwards compatibility)
|
|
143
|
+
if hasattr(request.app, "state"):
|
|
144
|
+
admin_auth = getattr(request.app.state, "_admin_auth_backend", None)
|
|
145
|
+
if admin_auth:
|
|
146
|
+
return admin_auth
|
|
152
147
|
return None
|
|
153
148
|
|
|
154
149
|
def _is_superadmin(self, request: Request) -> bool:
|
|
@@ -970,6 +965,7 @@ def setup_admin(
|
|
|
970
965
|
)
|
|
971
966
|
|
|
972
967
|
# Store auth backend in app state for permission checking in views
|
|
968
|
+
# Note: We'll also store it on the Admin's internal Starlette app after creation
|
|
973
969
|
if authentication_backend is not None:
|
|
974
970
|
app.state._admin_auth_backend = authentication_backend
|
|
975
971
|
|
|
@@ -991,6 +987,12 @@ def setup_admin(
|
|
|
991
987
|
|
|
992
988
|
admin = Admin(**admin_kwargs)
|
|
993
989
|
|
|
990
|
+
# Store auth backend on the Admin's internal Starlette app for permission checking.
|
|
991
|
+
# SQLAdmin creates an internal Starlette app (admin.admin) that handles /admin/* requests.
|
|
992
|
+
# When views call request.app, they get this internal app, not the FastAPI app.
|
|
993
|
+
if authentication_backend is not None:
|
|
994
|
+
admin.admin.state._admin_auth_backend = authentication_backend
|
|
995
|
+
|
|
994
996
|
# Add Jinja2 global function for role-based permission checking in templates.
|
|
995
997
|
# This is thread-safe because it checks request.session on each call,
|
|
996
998
|
# unlike modifying ModelView instance attributes which are shared.
|
|
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.2.2 → identity_plan_kit-0.2.4}/examples/integration/fastapi_integration.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/integration/sample_alembic_env.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/examples/integration/webhook_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dto/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dto/requests.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/dto/responses.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/handlers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/auth/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/cache/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/cache/plan_cache.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dto/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dto/responses.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/dto/usage.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/handlers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/feature.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/plan.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/plans/models/plan_limit.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/cache/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/models/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/models/permission.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/rbac/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/circuit_breaker.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/database.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/error_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/rate_limiter.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/request_id.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/src/identity_plan_kit/shared/security.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_oauth_service_resilience.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/auth/test_security_comprehensive.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
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_limit_boundaries.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_quota_concurrency.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_token_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/integration/test_user_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.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.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_circuit_breaker_concurrent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_http_utils_security.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_rate_limiter_concurrent.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.2 → identity_plan_kit-0.2.4}/tests/shared/test_state_store_concurrent.py
RENAMED
|
File without changes
|