2012-01-19 45 views
12

için tam rol hiyerarşisi nasıl alınır? Symfony2 rol hiyerarşisi kullanıyorum, iyi çalışıyor, ancak bazı değişiklikler yapmak için security.yml numaralı telefonumdan role_hierarchy kurulumunu almam gerekiyor.Symfony

role_hierarchy: 
ROLE_USER: [ROLE_ACCESS_USER, ROLE_ACCESS_DATA, ROLE_ACCESS_PRODUCT] 

nasıl ben ROLE_USERROLE_ACCESS_USER, ROLE_ACCESS_DATA, ROLE_ACCESS_PRODUCT ile yapılır benim kodunda bilebilir, sadece ROLE_USER dönmek getRoles() kullanarak?

Yardımlarınız için teşekkürler.

+0

Ne Gerekli:


aşağıdaki satırı ekleyerek senin config/services.yml yılında security.role_hierarchy için bir takma ad eklemek zorunda Symfony4 itibariyle

? –

+0

"kullanıcı" (ROLE_USER) benim varsayılan rol kümesine sahip, bir yöneticinin ona yalnızca belirli rolleri vermesine izin vermek istiyorum, örneğin sadece ROLE_ACCESS_DATA. Tüm mevcut rolleri gösteren bir arayüz üzerinden yapmak istiyorum. – linibou

cevap

34

Sen kabından hiyerarşiyi alabilirsiniz:

$container->getParameter('security.role_hierarchy.roles') 
+0

Mükemmel teşekkürler çok :-) – linibou

0

rollerinizin doğru gösterimi için, özyinelemeye gerekir. Roller diğer rolleri uzatabilir. Otomatik kablo etkinken https://stackoverflow.com/a/36900807/3635680

+0

Lütfen cevabınızdaki ilgili metni alıntılayınız. Sadece bağlantıya verilen yanıtların (linkin Yığın Taşması'na yol açmış olsa bile) yayınlanması önerilmez. –

0

, ayrıca doğrudan küresel rol hiyerarşisi ile dolu RoleHierarchy nesne enjekte edebilir: Burada

bir örnektir. Basitçe bağımlılık enjeksiyon kullanarak denetleyicisi veya hizmetle RoleHierarchyInterface enjekte:

use Symfony\Component\Security\Core\Role\RoleHierarchyInterface; 

// ... 
public function __construct(RoleHierarchyInterface $roleHierarchy) 
{ 
    $this->roleHierarchy = $roleHierarchy; 
} 

Not: Bu aynı zamanda sizin durumunda yararlı olabilir RoleHierarchy nesne üzerinde getReachableRoles() aramak için izin verir.

services: 
    # creating alias for RoleHierarchyInterface 
    Symfony\Component\Security\Core\Role\RoleHierarchyInterface: '@security.role_hierarchy'