Completed
Push — master ( 4f1190...3b2a6f )
by Nikolas
03:34
created

WebAccessControl::isExecutionPermitted()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 3
rs 10
cc 1
eloc 2
nc 1
nop 2
1
<?php namespace rtens\domin\delivery\web;
2
3
use rtens\domin\AccessControl;
4
use watoki\curir\delivery\WebRequest;
5
6
class WebAccessControl implements AccessControl {
7
8
    /** @var WebRequest */
9
    protected $request;
10
11
    /** @var AccessControl */
12
    private $access;
13
14
    /** @var null|callable */
15
    private $acquire;
16
17
    /**
18
     * @param AccessControl $access
19
     * @param WebRequest $request
20
     * @param callable|null $acquire Receives the WebRequest, returns a URL to redirect to
21
     */
22
    public function __construct(AccessControl $access, WebRequest $request, callable $acquire = null) {
23
        $this->request = $request;
24
        $this->access = $access;
25
        $this->acquire = $acquire;
26
    }
27
28
    /**
29
     * @param AccessControl $access
30
     * @param callable|null $acquire Receives the WebRequest, returns a URL to redirect to
31
     * @return callable The factory to build a WebAccessControl
32
     */
33
    public static function factory(AccessControl $access, callable $acquire = null) {
34
        return function (WebRequest $request) use ($access, $acquire) {
35
            return new WebAccessControl($access, $request, $acquire);
36
        };
37
    }
38
39
    /**
40
     * @param string $actionId
41
     * @return boolean
42
     */
43
    public function isVisible($actionId) {
44
        return $this->access->isVisible($actionId);
45
    }
46
47
    /**
48
     * @param string $actionId
49
     * @param mixed[] $parameters indexed by parameter names
50
     * @return boolean
51
     */
52
    public function isExecutionPermitted($actionId, array $parameters) {
53
        return $this->access->isExecutionPermitted($actionId, $parameters);
54
    }
55
56
    /**
57
     * @return null|\watoki\curir\protocol\Url
58
     */
59
    public function acquirePermission() {
60
        if ($this->acquire) {
61
            return call_user_func($this->acquire, $this->request);
62
        }
63
64
        return null;
65
    }
66
}