0

sonata_admin.security.handlerからsonata.admin.security.handler.aclに設定すると、ROLE_SUPER_ADMINのアクセス権を持つユーザーのみがアクセスできます。 私はだと思います。私はすべてを正しく構成しましたが、明らかにそうではありません。AclVoterが 'LIST'へのアクセスを拒否する

私が試した:

  • をユーザーに代わりfos_groupで割り当てるの本当の役割ROLE_VIP_CONTACT_ADMINを与えるために、何の成功を。
  • security.access_decision_manager.strategyのすべてのオプション:すべてのACLのテーブルを削除するには、肯定的、コンセンサスと全会一致
  • 、ACL:INIT、ソナタ:管理者:セットアップ-ACL、ととソナタなし:管理者:生成オブジェクト-ACLとキャッシュをクリア毎回。

成功しません。

# Acme\MyBundle\Controller\CRUDController.php 

$securityContext->getAdminPermissions(); 
# -> ["CREATE", "LIST", "DELETE", "UNDELETE", "EXPORT", "OPERATOR", "MASTER"] 

dump($this->admin->getSecurityInformation()); 
/* -> array:3 [▼ 
    "GUEST" => array:2 [▼ 
    0 => "VIEW" 
    1 => "LIST" 
    ] 
    "STAFF" => array:3 [▼ 
    0 => "EDIT" 
    1 => "LIST" 
    2 => "CREATE" 
    ] 
    "ADMIN" => array:3 [▼ 
    0 => "MASTER" 
    1 => "OPERATOR" 
    2 => "EXPORT" 
    ] 
] */ 

dump($this->getUser()->getRoles()); 
/* -> array:15 [▼ 
    0 => "ROLE_ADMIN" 
    1 => "ROLE_VIP_CONTACT_GUEST" 
    2 => "ROLE_VIP_CONTACT_STAFF" 
    3 => "ROLE_VIP_CONTACT_ADMIN" # <--- I gave him everything! 
    [...] 
    9 => "ROLE_ALLOWED_TO_SWITCH" 
    [...] 
    16 => "ROLE_USER" 
] */ 

今、私は自分のブラウザを開き、AccessDeniedExceptionその結果、app_dev.php/my-path-to/vip/contact/listに行きます。

/編集:ここと同じ問題ですACL + SonataAdminBundle + SonataUserBundle

答えて

0

デバッグの時間が経過した結果、SonataのAdminPermissionMapを使用して、ACLにLISTのアクセス許可を知らせるようになりました。あなたはこれをすでに知っているかもしれません

parameters: 
    security.acl.permission.map.class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap 

SonataAdminBundle 5. SecurityDocumentation » Admin(security.acl.permission.map.classはCtrl + F)を参照してください。

短い話をする:設定はいくつかの設定ファイルを書くだけでなく、正しい設定ファイルをインポートすることによっても行われます。シンフォニー> 3.1で

0

あなたはこれを使用する必要があります。代わりに

services: 
    security.acl.permission.map: 
    class: Sonata\AdminBundle\Security\Acl\Permission\AdminPermissionMap 

パラメータ: security.acl.permission.map.class:ソナタ\ AdminBundle \セキュリティ\ ACLを\許可\ AdminPermissionMap

関連する問題