Lines 100.00% 5 / 5
Functions and Methods 100.00% 1 / 1
Classes and Traits 100.00% 1 / 1
Name Lines Functions and Methods CRAP Classes and Traits
Delete 100.00% 5 / 5 100.00% 1 / 1 2 100.00% 1 / 1
 __invoke 100.00% 5 / 5 100.00% 1 / 1 2
1<?php
2
3namespace App\Controller\User;
4
5use App\Controller\BaseController;
6use App\Entity\User;
7use App\Enum\UserRole;
8use Doctrine\ORM\EntityManagerInterface;
9use Symfony\Component\HttpFoundation\Request;
10use Symfony\Component\HttpFoundation\Response;
11use Symfony\Component\Routing\Attribute\Route;
12use Symfony\Component\Security\Http\Attribute\IsGranted;
13
14#[Route('/user/{id}', name: 'app_user_delete', methods: ['POST'])]
15#[IsGranted(UserRole::ADMIN->value)]
16final class Delete extends BaseController
17{
18    public function __invoke(
19        Request $request,
20        User $user,
21        EntityManagerInterface $entityManager
22    ): Response {
23        if ($this->isCsrfTokenValid('delete'.$user->id, $request->getPayload()->getString('_token'))) {
24            $entityManager->remove($user);
25            $entityManager->flush();
26
27            $this->addFlash('success', 'User has been deleted.');
28        }
29
30        return $this->redirectToRoute('app_user_index', [], Response::HTTP_SEE_OTHER);
31    }
32}