|
|
|
@ -214,3 +214,33 @@ async def delete_pin(id: str, current_user: User = Depends(get_current_user)):
|
|
|
|
|
|
|
|
|
|
except bson.errors.InvalidId:
|
|
|
|
|
objectid_misformatted()
|
|
|
|
|
|
|
|
|
|
@pins_router.get(
|
|
|
|
|
path="/{id}/shares",
|
|
|
|
|
responses={401: {"model": HTTPError}, 404: {"model": HTTPError}, 422: {"model": HTTPError}, 403: {"model": HTTPError}}
|
|
|
|
|
)
|
|
|
|
|
async def get_pin_shares(id: str, current_user: User = Depends(get_current_user)):
|
|
|
|
|
try:
|
|
|
|
|
# Vérifier si le pin existe et appartient à l'utilisateur courant
|
|
|
|
|
pin = pins_collection.find_one({"_id": ObjectId(id)})
|
|
|
|
|
check_pin_is_null(pin)
|
|
|
|
|
|
|
|
|
|
if pin["user_id"] != current_user.uid:
|
|
|
|
|
raise HTTPException(status_code=403, detail="You can only view shares of your own pins")
|
|
|
|
|
|
|
|
|
|
# Récupérer toutes les permissions de partage pour ce pin
|
|
|
|
|
shares = pin_permissions_collection.find({"pin_id": ObjectId(id)})
|
|
|
|
|
|
|
|
|
|
# Transformer les résultats en liste de dictionnaires
|
|
|
|
|
shares_list = []
|
|
|
|
|
for share in shares:
|
|
|
|
|
shares_list.append({
|
|
|
|
|
"user_id": str(share["user_id"]),
|
|
|
|
|
"can_edit": share["can_edit"],
|
|
|
|
|
"can_delete": share["can_delete"]
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return {"shares": shares_list}
|
|
|
|
|
|
|
|
|
|
except bson.errors.InvalidId:
|
|
|
|
|
objectid_misformatted()
|