'\d+'])] #[IsGranted('IS_AUTHENTICATED_FULLY')] class MailMessageFlagController extends AbstractController { public function __construct( private readonly MailMessageRepository $messageRepository, private readonly MailProviderInterface $mailProvider, private readonly EntityManagerInterface $em, private readonly MailAccessChecker $accessChecker, ) {} public function __invoke(Request $request, int $id): JsonResponse { $this->accessChecker->ensureCanAccessMail($this->getUser()); $message = $this->messageRepository->find($id); if (null === $message) { throw new NotFoundHttpException('Message not found'); } $body = json_decode($request->getContent(), true); $flagged = (bool) ($body['flagged'] ?? true); try { $this->mailProvider->markFlagged($message->getFolder()->getPath(), $message->getUid(), $flagged); } catch (MailProviderException) { // Non bloquant } $message->setIsFlagged($flagged); $this->em->flush(); return $this->json(['id' => $message->getId(), 'isFlagged' => $message->isFlagged()]); } }