【问题标题】:EasyAdmin bundle: How to show data in a table depending on a role?EasyAdmin bundle:如何根据角色在表格中显示数据?
【发布时间】:2020-05-10 10:11:33
【问题描述】:

如果我有一个充满数据的表,我如何让 ROLE_USER 只看到他发布的数据,而让 ROLE_ADMIN 看到所有用户的所有数据?

到目前为止,我得到了这个:

class DocumentController extends EasyAdminController {

protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null)
{
    /**
     * @var QueryBuilder $qb
     */
    $qb = parent::createListQueryBuilder($entityClass, $sortDirection, $sortField, $dqlFilter);

    if (method_exists($entityClass, 'getUser'))
    {
        $qb->andWhere('entity.user = :user');
        $qb->setParameter('user', $this->getUser());
    }
    return $qb;
}

这有助于我根据用户查看我的表数据,但我无法使用角色使其工作。

【问题讨论】:

    标签: php symfony easyadmin


    【解决方案1】:

    如果您是管理员,您可以执行此代码,您将看到所有数据,但如果您是用户,您将只能看到您发布的数据

         $roleUser = $this->getUser()->getRoles();
    
            $isAdmin = 0;
    
            foreach ($roleUser as $role)
            {
                if ($role=='ROLE_ADMIN')
                {
                    $isAdmin = 1 ;
                }
            }
            if(!$isAdmin)
            {
    
                if (null === $dqlFilter) {
                    $dqlFilter = sprintf('entity.user_id = %s', $this->getUser()->getId());
    
    
                } else {
                    $dqlFilter .= sprintf(' AND entity.user_id = %s', $this->getUser()->getId());
                }
            }
    
    
            return parent::createListQueryBuilder($entityClass, $sortDirection, $sortField, $dqlFilter);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 2015-09-20
      • 2017-12-13
      • 1970-01-01
      相关资源
      最近更新 更多