Besoin d'un conseil, je travaille actuellement sur des apit rest ou j'ai ces endpoints, avec une permission par pour sso, modules...
Code : Tout sélectionner
/products/id/sso
/products/id/status
/products/id/securityCode : Tout sélectionner
/**
* Change value of sso for solution if solution use sso
* @Route("/api/products/{id}/sso", methods={"PUT"}, defaults={"permission_needed": ROLE::PERMISSION_SECURITY_WRITE})
* @param Security $security
* @return JsonResponse
*/
public function editSso(Security $security, Request $request, string $id)
{
// add better param validation
$ssoEnabled = json_decode($request->getContent(), true)['ssoEnabled'] ?? null;
$product = $this->em->getRepository(Product::class)->findOneBy(["productId" => $id]);
if (!$product) {
throw new NotFoundHttpException(sprintf("The product with %s not found", $id));
}
if (!is_bool($ssoEnabled)) {
throw new InvalidParameterException(sprintf("sso attribut is not valid %s", $ssoEnabled));
}
$product->setSsoEnabled($ssoEnabled);
$this->em->persist($product);
$this->em->flush();
return new JsonResponse([
'success' => sprintf("sso updated", $ssoEnabled)
], Response::HTTP_OK);
}
/**
* update status
* @Route("/api/products/{id}/status", methods={"PUT"}, defaults={"permission_needed": ROLE::PERMISSION_CONTRACT_WRITE})
* @param Security $security
* @return JsonResponse
*/
public function updateStatus(Request $request, string $id)
{
$status = (bool)json_decode($request->getContent(), true)['status'];
$product = $this->em->getRepository(Product::class)->findOneBy(["productId" => $id]);
if (!$product) {
throw new NotFoundHttpException(sprintf("The product with %s not found", $id));
}
$product->setIsActive($status);
$this->em->persist($product);
$this->em->flush();
return new JsonResponse(
['success' => "product status updated"],
Response::HTTP_OK
);
}