public function isPrivilegeTargetGrantedForRoles(array $roles, $privilegeTargetIdentifier, array $privilegeParameters = [])
{
$privilegeFound = false;
$accessGrants = 0;
$accessDenies = 0;
/** @var Role $role */
foreach ($roles as $role) {
$privilege = $role->getPrivilegeForTarget($privilegeTargetIdentifier, $privilegeParameters);
if ($privilege === null) {
continue;
}
$privilegeFound = true;
if ($privilege->isGranted()) {
$accessGrants++;
} elseif ($privilege->isDenied()) {
$accessDenies++;
}
}
if ($accessDenies === 0 && $accessGrants > 0) {
return true;
}
if ($accessDenies === 0 && $accessGrants === 0 && $privilegeFound === true && $this->allowAccessIfAllAbstain === true) {
return true;
}
return false;
}