* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Sonata\AdminBundle\Security\Handler; use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException; use Sonata\AdminBundle\Admin\AdminInterface; class AclSecurityHandler implements SecurityHandlerInterface { public function __construct(SecurityContextInterface $securityContext) { $this->securityContext = $securityContext; } /** * {@inheritDoc} */ public function isGranted($attributes, $object = null) { try { return $this->securityContext->isGranted($attributes, $object); } catch (AuthenticationCredentialsNotFoundException $e) { return false; } catch (\Exception $e) { throw $e; } } /** * {@inheritDoc} */ public function buildSecurityInformation(AdminInterface $admin) { $baseRole = 'ROLE_'.str_replace('.', '_', strtoupper($admin->getCode())).'_%s'; $results = array(); foreach ($admin->getSecurityInformation() as $name => $permissions) { $results[sprintf($baseRole, $name)] = $permissions; } return $results; } }