identity-plan-kit 0.2.1__tar.gz → 0.2.3__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.1 → identity_plan_kit-0.2.3}/PKG-INFO +1 -1
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/pyproject.toml +2 -2
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/admin/views.py +16 -3
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/uv.lock +1 -1
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/.gitignore +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/Makefile +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/README.md +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/alembic/env.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/alembic/script.py.mako +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/alembic/versions/20250124_000000_initial_schema.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/alembic/versions/20250127_000000_add_password_hash.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/alembic.ini +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/integration/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/integration/fastapi_integration.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/integration/sample_alembic_env.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/integration/webhook_integration.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/playing/admin_usage.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/playing/basic_usage.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/playing/custom_error_formats.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/playing/extending_models.html +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/playing/extension_example.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/prod/.env.production.example +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/prod/Dockerfile +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/prod/docker-compose.yml +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/prod/nginx.conf +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/prod/production_setup.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/prod/prometheus.yml +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/README.md +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/config.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/locustfile.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/test_auth.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/test_database_stress.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/test_mixed_scenarios.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/test_plans_quota.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/test_quota_direct.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/test_rbac_cache.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/loadtests/utils.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/admin/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/admin/auth.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dependencies.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/domain/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/domain/entities.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/domain/exceptions.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dto/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dto/requests.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dto/responses.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/handlers/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/handlers/oauth_routes.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/models/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/models/refresh_token.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/models/user.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/models/user_provider.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/repositories/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/repositories/token_repo.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/repositories/user_repo.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/services/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/services/auth_service.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/services/oauth_service.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/uow.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/cli.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/config.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/kit.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/migrations.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/cache/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/cache/plan_cache.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dependencies.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/domain/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/domain/entities.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/domain/exceptions.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dto/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dto/responses.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dto/usage.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/handlers/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/handlers/plan_routes.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/feature.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/feature_usage.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/plan.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/plan_limit.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/plan_permission.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/user_plan.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/repositories/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/repositories/plan_repo.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/repositories/usage_repo.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/services/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/services/plan_service.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/uow.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/cache/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/cache/permission_cache.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/dependencies.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/domain/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/domain/entities.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/domain/exceptions.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/models/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/models/permission.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/models/role.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/models/role_permission.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/repositories/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/repositories/rbac_repo.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/services/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/services/rbac_service.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/uow.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/audit.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/circuit_breaker.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/cleanup_scheduler.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/database.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/error_formatter.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/exception_handlers.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/exceptions.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/graceful_shutdown.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/health.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/http_utils.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/lockout.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/logging.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/metrics.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/models.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/rate_limiter.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/request_id.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/schemas.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/security.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/state_store.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/uow.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/uuid7.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_auth_service.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_circuit_breaker.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_csrf_state.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_dependencies.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_domain_entities.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_http_utils.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_lockout.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_lockout_concurrent.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_oauth_service_resilience.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_security_comprehensive.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/auth/test_token_security.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/conftest.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/conftest.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_concurrent_plan_operations.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_concurrent_token_operations.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_concurrent_user_creation.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_limit_boundaries.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_quota_concurrency.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_token_cleanup.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_token_repository.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_usage_periods.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_user_repository.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/plans/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/plans/test_domain_entities.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/plans/test_period_edge_cases.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/plans/test_plan_cache_concurrent.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/plans/test_plan_service.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/rbac/__init__.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/rbac/test_permission_cache.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/rbac/test_permission_cache_concurrent.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/rbac/test_rbac_cache_stampede.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/rbac/test_rbac_service.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_audit_pii_masking.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_circuit_breaker_concurrent.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_cleanup_scheduler_concurrent.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_config_validation.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_http_utils_security.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_rate_limiter.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_rate_limiter_concurrent.py +0 -0
- {identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.3"
|
|
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.3"
|
|
144
144
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
|
|
145
145
|
serialize = ["{major}.{minor}.{patch}"]
|
|
146
146
|
tag = true
|
|
@@ -131,11 +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
|
-
|
|
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)
|
|
137
140
|
if admin_auth:
|
|
138
141
|
return admin_auth
|
|
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
|
|
139
147
|
return None
|
|
140
148
|
|
|
141
149
|
def _is_superadmin(self, request: Request) -> bool:
|
|
@@ -959,6 +967,11 @@ def setup_admin(
|
|
|
959
967
|
# Store auth backend in app state for permission checking in views
|
|
960
968
|
if authentication_backend is not None:
|
|
961
969
|
app.state._admin_auth_backend = authentication_backend
|
|
970
|
+
logger.info(
|
|
971
|
+
"setup_admin_auth_backend_stored",
|
|
972
|
+
backend_type=type(authentication_backend).__name__,
|
|
973
|
+
app_type=type(app).__name__,
|
|
974
|
+
)
|
|
962
975
|
|
|
963
976
|
# Use bundled templates for role-based permission UI if no custom templates_dir provided.
|
|
964
977
|
# These templates check is_superadmin_user(request) to hide edit/delete buttons for non-superadmin.
|
|
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.1 → identity_plan_kit-0.2.3}/examples/integration/fastapi_integration.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/integration/sample_alembic_env.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/examples/integration/webhook_integration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dto/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dto/requests.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/dto/responses.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/handlers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/auth/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/cache/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/cache/plan_cache.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dto/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dto/responses.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/dto/usage.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/handlers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/feature.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/plan.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/plans/models/plan_limit.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/cache/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/dependencies.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/domain/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/domain/entities.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/domain/exceptions.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/models/__init__.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/models/permission.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/rbac/services/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/circuit_breaker.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/database.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/error_formatter.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/exceptions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/rate_limiter.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/request_id.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/src/identity_plan_kit/shared/security.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/tests/auth/test_oauth_service_resilience.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/tests/integration/test_limit_boundaries.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_quota_concurrency.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_token_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/integration/test_user_repository.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/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.1 → identity_plan_kit-0.2.3}/tests/shared/test_circuit_breaker_concurrent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_http_utils_security.py
RENAMED
|
File without changes
|
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_rate_limiter_concurrent.py
RENAMED
|
File without changes
|
{identity_plan_kit-0.2.1 → identity_plan_kit-0.2.3}/tests/shared/test_state_store_concurrent.py
RENAMED
|
File without changes
|