我需要:
要知道在UserAdmin.php中如何通过按ROLE过滤来修改查询
谢谢
答案 0 :(得分:0)
最后,这是我的解决方案:
public function createQuery($context = 'list')
{
$query = parent::createQuery('list');
if (!$this->isSuperAdmin()) {
/** @var \Sonata\DoctrineORMAdminBundle\Datagrid\ProxyQuery @query */
$query
->where("o.roles NOT LIKE '%ROLE_SUPER_ADMIN%'");
}
return $query;
}
并且,使用此功能,验证用户是否为SUPER_ADMIN:
private function isSuperAdmin() {
$isUserSuperAdmin = false;
$actualUserRoles = $this->getConfigurationPool()->getContainer()->get('security.token_storage')->getToken()->getUser()->getRoles();
if (in_array("ROLE_SUPER_ADMIN", $actualUserRoles)) {
$isUserSuperAdmin = true;
}
return $isUserSuperAdmin;
}