# backend/app/auth/scope.py — per-user 쿼리 스코프 헬퍼 (전 라우터 공용) from fastapi import HTTPException def scoped(stmt, model, user_id: str): """user_id 컬럼이 있는 모델 쿼리에 소유자 필터 강제. 없으면(공유 마스터) 그대로.""" if hasattr(model, "user_id"): return stmt.where(model.user_id == user_id) return stmt def owned_or_404(obj, user_id: str): """단건 조회 시 소유자 검증. 타인 데이터면 404(존재 자체를 숨김 — IDOR 방어).""" if obj is None or (hasattr(obj, "user_id") and obj.user_id != user_id): raise HTTPException(status_code=404, detail="not found") return obj