diff --git a/app/routes/pins.py b/app/routes/pins.py index a710abc..7a73797 100644 --- a/app/routes/pins.py +++ b/app/routes/pins.py @@ -92,8 +92,19 @@ async def add_pin(pin: PinDTO, current_user: User = Depends(get_current_user)): responses={401: {"model": HTTPError}} ) async def list_pins(current_user: User = Depends(get_current_user)): - pins = serializers.pins_serialize(pins_collection.find().to_list(), current_user.uid) - return pins + # Récupérer les IDs des pins partagés avec l'utilisateur + shared_pins = pin_permissions_collection.find({"user_id": current_user.uid}) + shared_pin_ids = [permission["pin_id"] for permission in shared_pins] + + # Récupérer tous les pins de l'utilisateur et les pins partagés avec lui + pins = pins_collection.find({ + "$or": [ + {"user_id": current_user.uid}, # Pins de l'utilisateur + {"_id": {"$in": shared_pin_ids}} # Pins partagés avec l'utilisateur + ] + }) + + return serializers.pins_serialize(pins.to_list()) @pins_router.post( path="/{id}/share", diff --git a/app/serializers/pin_serializer.py b/app/serializers/pin_serializer.py index f07077f..bd6473d 100644 --- a/app/serializers/pin_serializer.py +++ b/app/serializers/pin_serializer.py @@ -11,10 +11,9 @@ def pin_serialize(pin: list) -> Pin: "user_id": pin["user_id"] }) -def pins_serialize(pins: list, uid: str) -> list: +def pins_serialize(pins: list) -> list: serialized_pins: list = [] for pin in pins: - if pin["user_id"] == uid: - serialized_pins.append(pin_serialize(pin)) + serialized_pins.append(pin_serialize(pin)) return serialized_pins \ No newline at end of file