From 6d7e6f5f486f29c93fef53bfd705412e5561fdfc Mon Sep 17 00:00:00 2001 From: matthieu Date: Sun, 15 Mar 2026 20:07:19 +0100 Subject: [PATCH] fix : allow admin users to create client tickets on any project Co-Authored-By: Claude Opus 4.6 (1M context) --- src/State/ClientTicketNumberProcessor.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/State/ClientTicketNumberProcessor.php b/src/State/ClientTicketNumberProcessor.php index acfd677..c985332 100644 --- a/src/State/ClientTicketNumberProcessor.php +++ b/src/State/ClientTicketNumberProcessor.php @@ -35,17 +35,20 @@ final readonly class ClientTicketNumberProcessor implements ProcessorInterface $user = $this->security->getUser(); assert($user instanceof User); - if (null === $user->getClient()) { - throw new AccessDeniedHttpException('Only client users can create tickets.'); - } - $project = $data->getProject(); if (null === $project) { throw new BadRequestHttpException('Project is required.'); } - if (!$user->getAllowedProjects()->contains($project)) { - throw new AccessDeniedHttpException('You do not have access to this project.'); + // Admins can create tickets on any project; clients only on allowed projects + if (!$this->security->isGranted('ROLE_ADMIN')) { + if (null === $user->getClient()) { + throw new AccessDeniedHttpException('Only client users can create tickets.'); + } + + if (!$user->getAllowedProjects()->contains($project)) { + throw new AccessDeniedHttpException('You do not have access to this project.'); + } } $nextNumber = $this->clientTicketRepository->findNextNumberForProject($project);