Add a get route for pin shares
continuous-integration/drone/push Build is passing Details

master
Alexis Feron 6 days ago
parent 2b37533d9d
commit 402411f7b9

@ -212,5 +212,35 @@ async def delete_pin(id: str, current_user: User = Depends(get_current_user)):
raise HTTPException(status_code=403, detail="You don't have permission to delete this pin") raise HTTPException(status_code=403, detail="You don't have permission to delete this pin")
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: except bson.errors.InvalidId:
objectid_misformatted() objectid_misformatted()
Loading…
Cancel
Save