我想在我的索納塔管理儀表板上使用角色處理器安全。我使用Symfony 2.3。索納塔管理員一般角色
在醫生,我有:
每個權限相對於管理員:如果您嘗試在 FooAdmin(聲明爲sonata.admin.demo.foo服務),以獲得一個列表,將索納塔 檢查用戶是否具有
ROLE_SONATA_ADMIN_DEMO_FOO_EDIT
角色。
按我的理解,如果我有服務,如:
sonata.admin.article
sonata.admin.user
sonata.admin.tag
然後我需要創建一個編輯的角色,作爲一個列表這3個元素:
ROLE_SONATA_ADMIN_ARTICLE_EDIT
和ROLE_SONATA_ADMIN_USER_EDIT
和ROLE_SONATA_ADMIN_TAG_EDIT
但我寧願希望創建訪問更多的武將,例如,在我的情況下,簡單地做:ROLE_SONATA_ADMIN_EDIT
而不是三的名單。
有沒有一個簡單的方法來做到這一點與此捆綁?
# AppBundle/Security/Handler/MyRoleSecurityHandler.php
namespace AppBundle\Security\Handler;
use Sonata\AdminBundle\Admin\AdminInterface;
use Sonata\AdminBundle\Security\Handler\RoleSecurityHandler;
class MyRoleSecurityHandler extends RoleSecurityHandler
{
/**
* {@inheritDoc}
*/
public function getBaseRole(AdminInterface $admin)
{
return 'ROLE_SONATA_ADMIN_%s';
}
}
覆蓋與此相關的類索納塔服務:
# AppBundle/Resources/config/services.yml
services:
#...
sonata.admin.security.handler.role:
class: AppBundle\Security\Handler\MyRoleSecurityHandler
public: false
arguments: [@security.context, [ROLE_SUPER_ADMIN]]
記得在您的層次結構聲明這些角色: