<?php namespace OCA\OrganizationFolders\Security; class AffirmativeStrategy implements \Stringable { private bool $allowIfAllAbstainDecisions; public function __construct(bool $allowIfAllAbstainDecisions = false) { $this->allowIfAllAbstainDecisions = $allowIfAllAbstainDecisions; } public function decide(\Traversable $results): bool { $deny = 0; foreach ($results as $result) { if (VoterInterface::ACCESS_GRANTED === $result) { return true; } if (VoterInterface::ACCESS_DENIED === $result) { ++$deny; } } if ($deny > 0) { return false; } return $this->allowIfAllAbstainDecisions; } public function __toString(): string { return 'affirmative'; } }