<?php namespace App\Controller\CRUD; use Sonata\AdminBundle\Controller\CRUDController as Controller; use Sonata\AdminBundle\Datagrid\ProxyQueryInterface; use Symfony\Component\HttpFoundation\RedirectResponse; class CRUDController extends Controller { public function deleteAction($id) { $request = $this->getRequest(); $id = $request->get($this->admin->getIdParameter()); $object = $this->admin->getObject($id); if (!$object) { throw $this->createNotFoundException(sprintf('unable to find the object with id: %s', $id)); } $currentUserId = $this->getUser()->getId(); // ID of the current user if ($currentUserId == $id) { $this->addFlash( 'sonata_flash_error', 'Vous ne pouvez pas supprimer votre compte !' ); return $this->redirectTo($object); } if ($object->hasRole('ROLE_SUPER_ADMIN') || $object->hasRole('ROLE_ADMIN_SIEGE')) { $this->addFlash( 'sonata_flash_error', 'Vous ne pouvez pas supprimer le compte admin !' ); return $this->redirectTo($object); } return parent::deleteAction($id); } public function batchActionDelete(ProxyQueryInterface $query) { $request = $this->getRequest(); $currentUserId = $this->getUser()->getId(); // ID of the current user $selectedUsers = $query->execute(); foreach ($selectedUsers as $selectedUser) { if ($selectedUser->getId() == $currentUserId) { $this->addFlash( 'sonata_flash_error', 'Vous ne pouvez pas supprimer votre compte !' ); return new RedirectResponse( $this->admin->generateUrl('list', array('filter' => $this->admin->getFilterParameters())) ); } if ($selectedUser->hasRole('ROLE_SUPER_ADMIN') || $selectedUser->hasRole('ROLE_ADMIN_SIEGE')) { $this->addFlash( 'sonata_flash_error', 'Vous ne pouvez pas supprimer le compte admin !' ); return new RedirectResponse( $this->admin->generateUrl('list', array('filter' => $this->admin->getFilterParameters())) ); } } return parent::batchActionDelete($query); } }