Jak*_*tre 5 php symfony doctrine-orm
我有一个 symfony 应用程序,我想ROLE_ADMIN在数据库中记录每个任务。我尝试添加一个新的捆绑包,但我不太确定如何将其加载到AppKernel.php. 您可以提供的任何指导都会非常有帮助。
我将在事件上创建一个事件侦听器kernel.request,并检查请求是否来自具有ROLE_ADMIN.
首先创建服务并security.authorization_checker注入doctrine.orm.entity_manager:
admin_log_listener:
class: AppBundle\EventListener\AdminLogListener
arguments: [ "@security.authorization_checker", "@doctrine.orm.entity_manager" ]
tags:
- { name: kernel.event_listener, event: kernel.request }
Run Code Online (Sandbox Code Playgroud)
然后创建事件监听器:
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\Security\Core\Authorization\AuthorizationChecker;
use Doctrine\ORM\EntityManager;
class AdminLogListener {
protected $authChecker;
protected $entityManager;
public function __construct(AuthorizationChecker $authChecker, EntityManager $entityManager)
{
$this->authChecker = $authChecker;
$this->entityManager = $entityManager;
}
public function onKernelRequest(GetResponseEvent $event)
{
if ($this->authChecker->isGranted('ROLE_ADMIN')) {
// Use $this->entityManager to send query or call a repository function
// Refer to http://www.doctrine-project.org/api/orm/2.5/class-Doctrine.ORM.EntityManager.html
}
}
}
Run Code Online (Sandbox Code Playgroud)