public function assert(\Zend\Permissions\Acl\Acl $acl, \Zend\Permissions\Acl\Role\RoleInterface $role = null, \Zend\Permissions\Acl\Resource\ResourceInterface $resource = null, $privilege = null) { $model = $resource->getModel(); if ($model instanceof \Application\Model\Relation\UserCalendar) { $collection = $model->getCalendar()->getUserCalendars(); } elseif ($model instanceof \Application\Model\Relation\UserPlace) { $collection = $model->getPlace()->getUserPlaces(); } else { throw new \InvalidArgumentException('The resource being checked is not a supported relation. Either implement the relation support, or modify ACL rules.'); } return count($collection) === 1; }
public function assert(\Zend\Permissions\Acl\Acl $acl, \Zend\Permissions\Acl\Role\RoleInterface $role = null, \Zend\Permissions\Acl\Resource\ResourceInterface $resource = null, $privilege = null) { $model = $resource->getModel(); if (!$model instanceof \Application\Authorization\HasRelationToUsersInterface) { throw new \InvalidArgumentException('The resource being checked must implement HasRelationToUsersInterface. Either implement the interface, or modify ACL rules.'); } // If we found the user in relations, that means there is a relation, so return false (duh!) foreach ($model->getUsers() as $user) { if ($user === $role->getUser()) { return false; } } return true; }