2016-01-12 8 views
7

znalazłem ten sposób kontroler, który ułatwia dostęp do filtrowania z nazwą Rola:denyAccessUnlessGranted w kontrolerze wiele ról

$this->denyAccessUnlessGranted('ROLE_EDIT', $item, 'You cannot edit this item.'); 

to możliwe, aby używać tej samej metody z wieloma rolami. Próbowałem coś takiego, ale to nie robi wydaje się działać:

$this->denyAccessUnlessGranted(array('ROLE_EDIT', 'ROLE_WHATEVER'), $item, 'You cannot edit this item.'); 

Dzięki za pomoc

+0

co chcesz wyrazić? czy obie role są potrzebne, czy jedno z nich? –

+0

Potrzebuję obu ról, aby uzyskać dostęp do akcji – Python

Odpowiedz

5

patrząc na sposób pokazuje jak to działa

protected function denyAccessUnlessGranted($attributes, $object = null, $message = 'Access Denied.') 
{ 
    if (!$this->isGranted($attributes, $object)) { 
     throw $this->createAccessDeniedException($message); 
    } 
} 

więc można łatwo dostosować to do sprawy

w kontrolerze sth. jak:

if(!$this->isGranted('ROLE_EDIT', $item) && !$this->isGranted('ROLE_OTHER', $item)){ 
    throw $this->createAccessDeniedException('not allowed'); 
} 
3

denyAccessUnlessGranted akceptuje tablicę nazw ról, więc

$this->denyAccessUnlessGranted(['ROLE_EDIT', 'ROLE_ADMIN'], $item, 'You cannot edit this item.'); 

tak, powinieneś być w stanie przekazać wszystkie swoje role.

Craig

Powiązane problemy