Check if Admin Role is Granted to a User in Symfony 6
In today's lesson, we are going to see how to check if the currently logged-in user has access to an admin route in Symfony 6 controller.
Check if current user has access to admin routes
So to check if a user has access to admin routes you can use Symfony 6 route annotations if the user has the role of admin he can access the route if not a 404 page not found is displayed.
<?php
namespace App\Controller;
use App\Entity\Product;
use App\Form\ProductType;
use App\Repository\ProductRepository;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class ProductController extends AbstractController
{
private $productRepository;
private $entityManager;
public function __construct(
ProductRepository $productRepository,
ManagerRegistry $doctrine)
{
$this->productRepository = $productRepository;
$this->entityManager = $doctrine->getManager();
}
#[Route('/product', name: 'product_list')]
/**
* @IsGranted("ROLE_ADMIN", statusCode=404, message="Page not found")
*/
public function index(): Response
{
$products = $this->productRepository->findAll();
return $this->render('product/index.html.twig', [
'products' => $products,
]);
}
}