csrd-utils 0.3.71__tar.gz → 0.3.73__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.
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/PKG-INFO +1 -1
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/pyproject.toml +1 -1
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/__main__.py +5 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/cookiecutter.json +1 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/README.md +3 -0
- csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +4 -0
- csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/auth_delegate.py +11 -0
- csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/delegates/identity_delegate.py +11 -0
- csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +9 -0
- csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_passthrough.py +25 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +11 -4
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/requirements.txt +1 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/settings.py +1 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +2 -1
- csrd_utils-0.3.73/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_service_view.py +28 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +1 -1
- csrd_utils-0.3.71/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -3
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/.gitignore +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/README.md +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/audit.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/augmentor.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/cluster.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/doctor.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/conftest.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/manifest.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/requirements.fragment +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/settings.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/src/app/cache.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/tests/test_cache.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/conftest.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/manifest.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/requirements.fragment +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/settings.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/src/app/middleware/logging.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/tests/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/conftest.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/manifest.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/requirements.fragment +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/settings.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/src/app/middleware/metrics.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/tests/test_metrics_middleware.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/conftest.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/manifest.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/requirements.fragment +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/settings.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/src/app/middleware/tracing.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/tests/test_tracing_middleware.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/conftest.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/docker-compose.fragment.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/manifest.yaml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/requirements.fragment +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/settings.fragment.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/celery_app.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/tasks.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/tests/test_workers.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/fragments.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/generator.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/resources.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/README.md +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/hooks/post_gen_project.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.cookiecutterignore +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/cache.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/delegates/upstreams.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/auth_service.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/delegates.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/item_repository.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/dependencies/worker_broker.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/docker-compose.yml +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/middleware/logging.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/repositories/item_repository.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/acceptance/test_logging_middleware.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/conftest.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/test_items.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_cache.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_database_settings.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_delegates.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_settings_contracts.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/tests/unit/test_worker_broker.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/views/unversioned/items_view.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/{{cookiecutter.__service_name_snake}}/workers/tasks.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-app-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/repositories/token_repository.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/auth_view.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-auth-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/cookiecutter.json +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/.dockerignore +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/Dockerfile +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/README.md +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/dependencies/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/repositories/user_repository.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/requirements.txt +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/settings.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/__init__.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/health_view.py +0 -0
- {csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/platform-identity-service/{{cookiecutter.__service_name_snake}}/views/unversioned/users_view.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: csrd-utils
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.73
|
|
4
4
|
Summary: CLI utilities for csrd service generation and feature augmentation
|
|
5
5
|
Project-URL: Repository, https://github.com/csrd-api/fastapi-common
|
|
6
6
|
Project-URL: Documentation, https://github.com/csrd-api/fastapi-common/tree/main/packages/utils
|
|
@@ -499,7 +499,12 @@ def _generate_services_from_cluster_spec(
|
|
|
499
499
|
elif role == "app":
|
|
500
500
|
auth_port = next((port_map[n] for n in port_map if "auth" in n), 8081)
|
|
501
501
|
auth_name = next((n for n in port_map if "auth" in n), "auth-service")
|
|
502
|
+
identity_port = next((port_map[n] for n in port_map if "identity" in n), 8082)
|
|
503
|
+
identity_name = next(
|
|
504
|
+
(n for n in port_map if "identity" in n), "identity-service"
|
|
505
|
+
)
|
|
502
506
|
extra["auth_service_url"] = f"http://{auth_name}:{auth_port}"
|
|
507
|
+
extra["identity_service_url"] = f"http://{identity_name}:{identity_port}"
|
|
503
508
|
result = generate_platform_service(
|
|
504
509
|
name=name,
|
|
505
510
|
output_dir=workspace_root,
|
|
@@ -5,6 +5,8 @@ Platform app service with auth-guarded item endpoints.
|
|
|
5
5
|
## Endpoints
|
|
6
6
|
|
|
7
7
|
- `GET /health` - liveness probe
|
|
8
|
+
- `POST /signup` - passthrough to identity signup (public)
|
|
9
|
+
- `POST /login` - passthrough to auth token issue (public)
|
|
8
10
|
- `POST /api/items` - create item (bearer required)
|
|
9
11
|
- `GET /api/items` - list items (bearer required)
|
|
10
12
|
- `GET /api/items/{entity_id}` - get item (bearer required)
|
|
@@ -17,6 +19,7 @@ Platform app service with auth-guarded item endpoints.
|
|
|
17
19
|
| Variable | Default | Description |
|
|
18
20
|
|---|---|---|
|
|
19
21
|
| `AUTH_SERVICE_URL` | `{{ cookiecutter.auth_service_url }}` | Auth service verify endpoint base URL |
|
|
22
|
+
| `IDENTITY_SERVICE_URL` | `{{ cookiecutter.identity_service_url }}` | Identity service base URL for signup passthrough |
|
|
20
23
|
|
|
21
24
|
## Run
|
|
22
25
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from csrd.delegate import BaseDelegate
|
|
2
|
+
|
|
3
|
+
from ..settings import settings
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class AuthDelegate(BaseDelegate):
|
|
7
|
+
def __init__(self) -> None:
|
|
8
|
+
super().__init__(settings.auth_service_url)
|
|
9
|
+
|
|
10
|
+
async def login(self, username: str, password: str) -> dict[str, object]:
|
|
11
|
+
return await self.post("/api/token", json={"username": username, "password": password})
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from csrd.delegate import BaseDelegate
|
|
2
|
+
|
|
3
|
+
from ..settings import settings
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class IdentityDelegate(BaseDelegate):
|
|
7
|
+
def __init__(self) -> None:
|
|
8
|
+
super().__init__(settings.identity_service_url)
|
|
9
|
+
|
|
10
|
+
async def signup(self, username: str, password: str) -> dict[str, object]:
|
|
11
|
+
return await self.post("/api/signup", json={"username": username, "password": password})
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from typing import Annotated
|
|
2
|
+
|
|
3
|
+
from fastapi import Depends
|
|
4
|
+
|
|
5
|
+
from ..delegates import AuthDelegate, IdentityDelegate
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def auth_delegate_factory() -> AuthDelegate:
|
|
9
|
+
return AuthDelegate()
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def identity_delegate_factory() -> IdentityDelegate:
|
|
13
|
+
return IdentityDelegate()
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
AuthDelegateDep = Annotated[AuthDelegate, Depends(auth_delegate_factory)]
|
|
17
|
+
IdentityDelegateDep = Annotated[IdentityDelegate, Depends(identity_delegate_factory)]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
__all__ = (
|
|
21
|
+
"AuthDelegateDep",
|
|
22
|
+
"IdentityDelegateDep",
|
|
23
|
+
"auth_delegate_factory",
|
|
24
|
+
"identity_delegate_factory",
|
|
25
|
+
)
|
|
@@ -2,7 +2,6 @@ from typing import Annotated
|
|
|
2
2
|
|
|
3
3
|
import httpx
|
|
4
4
|
from fastapi import Depends, HTTPException, Security
|
|
5
|
-
from fastapi.params import Depends as DependsParam
|
|
6
5
|
from fastapi.requests import Request
|
|
7
6
|
from fastapi.security import HTTPBearer
|
|
8
7
|
|
|
@@ -50,12 +49,20 @@ async def _remote_verify(_: Request, token: str) -> UserClaims:
|
|
|
50
49
|
_authenticator = CallbackAuthenticator(callback=_remote_verify)
|
|
51
50
|
_bearer_dep = create_bearer_dependency(_authenticator, token_finder=find_token)
|
|
52
51
|
_http_bearer_scheme = HTTPBearer()
|
|
52
|
+
_router_scheme_dep = Security(_http_bearer_scheme)
|
|
53
|
+
_router_claims_dep = Depends(_bearer_dep)
|
|
53
54
|
|
|
54
55
|
# For use as a route function parameter annotation.
|
|
55
56
|
VerifiedTokenDep = Annotated[UserClaims, Security(_bearer_dep)]
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
async def _router_auth_guard(
|
|
59
|
+
_scheme=_router_scheme_dep,
|
|
60
|
+
_claims=_router_claims_dep,
|
|
61
|
+
) -> None:
|
|
62
|
+
"""Composite auth dependency for router-level use."""
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
# Use as `dependencies=[router_auth]` so adding more deps stays explicit.
|
|
66
|
+
router_auth = Depends(_router_auth_guard)
|
|
60
67
|
|
|
61
68
|
__all__ = ("VerifiedTokenDep", "router_auth")
|
|
@@ -7,6 +7,7 @@ class Settings(BaseSettings):
|
|
|
7
7
|
app_name: str = "{{ cookiecutter.service_name }}"
|
|
8
8
|
port: int = {{ cookiecutter.port }}
|
|
9
9
|
auth_service_url: str = "{{ cookiecutter.auth_service_url }}"
|
|
10
|
+
identity_service_url: str = "{{ cookiecutter.identity_service_url }}"
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
settings = Settings()
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
from fastapi import FastAPI
|
|
2
2
|
|
|
3
|
-
from . import health_view, items_view
|
|
3
|
+
from . import auth_service_view, health_view, items_view
|
|
4
4
|
|
|
5
5
|
unversioned_app = FastAPI(title="{{ cookiecutter.service_name }}")
|
|
6
6
|
|
|
7
7
|
unversioned_app.include_router(health_view.router)
|
|
8
|
+
unversioned_app.include_router(auth_service_view.router)
|
|
8
9
|
unversioned_app.include_router(items_view.router)
|
|
9
10
|
|
|
10
11
|
__all__ = ("unversioned_app",)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from fastapi import APIRouter
|
|
2
|
+
from pydantic import BaseModel
|
|
3
|
+
|
|
4
|
+
from ...dependencies import AuthDelegateDep, IdentityDelegateDep
|
|
5
|
+
|
|
6
|
+
router = APIRouter(tags=["Auth Service"])
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class SignupRequest(BaseModel):
|
|
10
|
+
username: str
|
|
11
|
+
password: str
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class LoginRequest(BaseModel):
|
|
15
|
+
username: str
|
|
16
|
+
password: str
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@router.post("/signup")
|
|
20
|
+
async def signup(payload: SignupRequest, delegate: IdentityDelegateDep) -> dict[str, object]:
|
|
21
|
+
async with delegate:
|
|
22
|
+
return await delegate.signup(payload.username, payload.password)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@router.post("/login")
|
|
26
|
+
async def login(payload: LoginRequest, delegate: AuthDelegateDep) -> dict[str, object]:
|
|
27
|
+
async with delegate:
|
|
28
|
+
return await delegate.login(payload.username, payload.password)
|
|
@@ -6,7 +6,7 @@ from pydantic import BaseModel
|
|
|
6
6
|
|
|
7
7
|
from ...dependencies import router_auth
|
|
8
8
|
|
|
9
|
-
router = APIRouter(prefix="/api", tags=["Items Endpoints"], dependencies=router_auth)
|
|
9
|
+
router = APIRouter(prefix="/api", tags=["Items Endpoints"], dependencies=[router_auth])
|
|
10
10
|
|
|
11
11
|
_ITEMS: dict[str, dict[str, str]] = {}
|
|
12
12
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/caching/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/logging/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/metrics/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/conftest.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/tracing/settings.fragment.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/conftest.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/docker-compose.fragment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/requirements.fragment
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/settings.fragment.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/src/app/workers/tasks.py
RENAMED
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/features/workers/tests/test_workers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{csrd_utils-0.3.71 → csrd_utils-0.3.73}/src/csrd_utils/templates/cookiecutter-service/README.md
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
|
|
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
|
|
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
|