When DELETE /pin/{id}, delete share if user has a share
continuous-integration/drone/push Build is passing Details

nominatim_fix
Alix JEUDI--LEMOINE 3 weeks ago
parent f00aaa7737
commit 7cbdc11cd8

@ -170,15 +170,27 @@ async def delete_pin(id: str, current_user: User = Depends(get_current_user)):
if pin is None: if pin is None:
raise HTTPException(status_code=404, detail="Pin not found") raise HTTPException(status_code=404, detail="Pin not found")
# Vérifier si l'utilisateur est le propriétaire du pin # Si l'utilisateur est le propriétaire, supprimer le pin et toutes ses permissions
if pin["user_id"] != current_user.uid: if pin["user_id"] == current_user.uid:
raise HTTPException(status_code=403, detail="Only the owner can delete the pin")
# Supprimer le pin et toutes ses permissions
pins_collection.delete_one({"_id": ObjectId(id)}) pins_collection.delete_one({"_id": ObjectId(id)})
pin_permissions_collection.delete_many({"pin_id": ObjectId(id)}) pin_permissions_collection.delete_many({"pin_id": ObjectId(id)})
return {"message": "Pin deleted successfully"} 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
})
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"}
raise HTTPException(status_code=403, detail="You don't have permission to delete this pin")
except bson.errors.InvalidId: except bson.errors.InvalidId:
objectid_misformatted() objectid_misformatted()
Loading…
Cancel
Save