add zend acl implementation
[GitHub/Stricted/Domain-Control-Panel.git] / vendor / Zend / Permissions / Acl / Assertion / CallbackAssertion.php
diff --git a/vendor/Zend/Permissions/Acl/Assertion/CallbackAssertion.php b/vendor/Zend/Permissions/Acl/Assertion/CallbackAssertion.php
new file mode 100644 (file)
index 0000000..df30528
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+/**
+ * Zend Framework (http://framework.zend.com/).
+ *
+ * @link      http://github.com/zendframework/zf2 for the canonical source repository
+ * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license   http://framework.zend.com/license/new-bsd New BSD License
+ */
+namespace Zend\Permissions\Acl\Assertion;
+
+use Zend\Permissions\Acl\Acl;
+use Zend\Permissions\Acl\Exception\InvalidArgumentException;
+use Zend\Permissions\Acl\Resource\ResourceInterface;
+use Zend\Permissions\Acl\Role\RoleInterface;
+
+class CallbackAssertion implements AssertionInterface
+{
+    /**
+     * @var callable
+     */
+    protected $callback;
+
+    /**
+     * @param callable $callback The assertion callback
+     */
+    public function __construct($callback)
+    {
+        if (! is_callable($callback)) {
+            throw new InvalidArgumentException('Invalid callback provided; not callable');
+        }
+        $this->callback = $callback;
+    }
+
+    /**
+     * Returns true if and only if the assertion conditions are met.
+     *
+     * This method is passed the ACL, Role, Resource, and privilege to which the
+     * authorization query applies.
+     *
+     * If the $role, $resource, or $privilege parameters are null, it means
+     * that the query applies to all Roles, Resources, or privileges,
+     * respectively.
+     *
+     * @param Acl               $acl
+     * @param RoleInterface     $role
+     * @param ResourceInterface $resource
+     * @param string            $privilege
+     *
+     * @return bool
+     */
+    public function assert(
+        Acl $acl,
+        RoleInterface $role = null,
+        ResourceInterface $resource = null,
+        $privilege = null
+    ) {
+        return (bool) call_user_func($this->callback, $acl, $role, $resource, $privilege);
+    }
+}