github-actions[bot]
Deploy from GitHub 39b3777315c11d9c8bcd39ad7bf034f2a88a7379 (filtered: code + Dockerfile + README + NOTICES only)
2e175db
Raw
History Blame Contribute Delete
1.21 kB
"""
Optional image storage (S3 / Cloudflare R2).
Privacy contract
----------------
Visitor uploads are NEVER persisted by default. This module is only invoked
when ALL of the following are true:
1. settings.store_uploads is True (env: STORE_UPLOADS=true)
2. The request comes from an authenticated user
3. That user has explicitly opted in to scan history / forensic reports
None of this is wired up in Stage 1. The module exists to make the
architecture visible and to lock in the privacy default at the type level.
"""
from __future__ import annotations
def store_image(scan_id: str, image_bytes: bytes) -> str: # noqa: ARG001
"""Upload image to blob storage; return the object key.
Raises
------
PermissionError :
If called when settings.store_uploads is False, as a defence-in-depth
check against a future bug accidentally persisting visitor uploads.
"""
from ..config import settings
if not settings.store_uploads:
raise PermissionError(
"Image storage is disabled by default. Enable explicitly via "
"STORE_UPLOADS=true AND user opt-in."
)
raise NotImplementedError("Blob storage wired up in Stage 2.")