/** * Check if this assertion is true * * @param AuthorizationService $authorization * @param mixed $context * @throws InvalidArgumentException * @return bool */ public function assert(AuthorizationService $authorization, $context = null) { if (!$context instanceof InstanceAwareInterface) { throw new InvalidArgumentException(); } if (!$authorization instanceof StatefulAuthorizationService) { throw new InvalidArgumentException(); } $result = $authorization->getAuthorizationResult(); $permission = $result->getPermission(); $permissionToMatch = $this->getPermissionService()->findParametrizedPermission((string) $permission, 'instance', $context->getInstance()->getId()); foreach ($result->getRoles() as $role) { if ($role->hasPermission($permissionToMatch->getId())) { return true; } } return false; }