2016-01-12 15 views
7

Ho trovato questo metodo di controllo che aiuta l'accesso filtraggio con un nome di ruolo:denyAccessUnlessGranted a controllo molteplici ruoli

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

E 'possibile utilizzare lo stesso metodo con più ruoli. Ho provato qualcosa di simile ma sembra doesnt funzionare:

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

Grazie per l'aiuto

+0

cosa vuoi esprimere? entrambi i ruoli sono necessari o uno di entrambi? –

+0

Ho bisogno di entrambi i ruoli per poter accedere all'azione – Python

risposta

5

esaminando il metodo mostra come funziona

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

così si potrebbe facilmente adattare questo al vostro caso

nel controller sth. come:

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

denyAccessUnlessGranted accetta un array di nomi di ruolo, in modo da

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

così, si dovrebbe essere in grado di trasmettere tutti i ruoli.

Craig

Problemi correlati