right->getSource()); $allSourcesToWhichRightApplies = clone $rightSourceMemberInformation->getAllMembers(); $allSourcesToWhichRightApplies->add($this->right->getSource()); return $allSourcesToWhichRightApplies; } private function hasSource(SourceInterface $source): bool { return $this->getAllSourcesToWhichRightApplies()->contains($source); } private function isLayerEqual(string $layer): bool { return $this->right->getLayer() === $layer; } private function isTypeEqual(string $type): bool { return $this->right->getType() === $type; } private function checkPermission(): bool { return $this->right->getGrant(); } public function __construct(RightInterface $right) { $this->right = $right; } public function isGranted(string $layer, string $type, SourceInterface $source): bool { return $this->isLayerEqual($layer) && $this->isTypeEqual($type) && $this->hasSource($source) && $this->checkPermission(); } }