1 | <?php |
||
26 | class CachedPermissionService implements APIPermissionResolver, APIPermissionCriterionResolver |
||
27 | { |
||
28 | /** |
||
29 | * @var \eZ\Publish\API\Repository\PermissionResolver |
||
30 | */ |
||
31 | private $permissionResolver; |
||
32 | |||
33 | /** |
||
34 | * @var \eZ\Publish\API\Repository\PermissionCriterionResolver |
||
35 | */ |
||
36 | private $permissionCriterionResolver; |
||
37 | |||
38 | /** |
||
39 | * @var int |
||
40 | */ |
||
41 | private $cacheTTL; |
||
42 | |||
43 | /** |
||
44 | * Cached value for current user's getCriterion() result. |
||
45 | * |
||
46 | * Value is null if not yet set or cleared. |
||
47 | * |
||
48 | * @var bool|\eZ\Publish\API\Repository\Values\Content\Query\Criterion |
||
49 | */ |
||
50 | private $permissionCriterion; |
||
51 | |||
52 | /** |
||
53 | * Cache time stamp. |
||
54 | * |
||
55 | * @var int |
||
56 | */ |
||
57 | private $permissionCriterionTs; |
||
58 | |||
59 | /** |
||
60 | * CachedPermissionService constructor. |
||
61 | * |
||
62 | * @param \eZ\Publish\API\Repository\PermissionResolver $permissionResolver |
||
63 | * @param \eZ\Publish\API\Repository\PermissionCriterionResolver $permissionCriterionResolver |
||
64 | * @param int $cacheTTL By default set to 5 seconds, should be low to avoid to many permission exceptions on long running requests / processes (even if tolerant search service should handle that) |
||
65 | */ |
||
66 | public function __construct( |
||
75 | |||
76 | public function getCurrentUserReference() |
||
80 | |||
81 | public function setCurrentUserReference(UserReference $userReference) |
||
87 | |||
88 | public function hasAccess($module, $function, UserReference $userReference = null) |
||
92 | |||
93 | public function canUser($module, $function, ValueObject $object, array $targets = []) |
||
97 | |||
98 | public function getPermissionsCriterion($module = 'content', $function = 'read') |
||
118 | |||
119 | /** |
||
120 | * @internal For internal use only, do not depend on this method. |
||
121 | */ |
||
122 | public function sudo(\Closure $callback, RepositoryInterface $outerRepository) |
||
126 | } |
||
127 |