From 7cbdc11cd896d752a628ec35d7cdf1ed1ed3b921 Mon Sep 17 00:00:00 2001 From: Alix JEUDI--LEMOINE Date: Thu, 15 May 2025 08:16:02 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20When=20DELETE=20/pin/{id},=20delete?= =?UTF-8?q?=20share=20if=20user=20has=20a=20share?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/routes/pins.py | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/app/routes/pins.py b/app/routes/pins.py index 7a73797..6570cd4 100644 --- a/app/routes/pins.py +++ b/app/routes/pins.py @@ -170,15 +170,27 @@ async def delete_pin(id: str, current_user: User = Depends(get_current_user)): if pin is None: raise HTTPException(status_code=404, detail="Pin not found") - # Vérifier si l'utilisateur est le propriétaire du pin - if pin["user_id"] != current_user.uid: - raise HTTPException(status_code=403, detail="Only the owner can delete the pin") + # Si l'utilisateur est le propriétaire, supprimer le pin et toutes ses permissions + if pin["user_id"] == current_user.uid: + pins_collection.delete_one({"_id": ObjectId(id)}) + pin_permissions_collection.delete_many({"pin_id": ObjectId(id)}) + return {"message": "Pin deleted successfully"} + + # Si l'utilisateur n'est pas le propriétaire, vérifier s'il a une permission de partage + permission = pin_permissions_collection.find_one({ + "pin_id": ObjectId(id), + "user_id": current_user.uid + }) - # Supprimer le pin et toutes ses permissions - pins_collection.delete_one({"_id": ObjectId(id)}) - pin_permissions_collection.delete_many({"pin_id": ObjectId(id)}) + if permission: + # Supprimer uniquement la permission de partage pour cet utilisateur + pin_permissions_collection.delete_one({ + "pin_id": ObjectId(id), + "user_id": current_user.uid + }) + return {"message": "Pin access removed"} - return {"message": "Pin deleted successfully"} + raise HTTPException(status_code=403, detail="You don't have permission to delete this pin") except bson.errors.InvalidId: objectid_misformatted() \ No newline at end of file