@@ 5-28 (lines=24) @@ | ||
2 | ||
3 | namespace Psecio\Invoke\Match\User; |
|
4 | ||
5 | class HasGroup extends \Psecio\Invoke\MatchInstance |
|
6 | { |
|
7 | /** |
|
8 | * Evaluate the group (or name) provided to see if there's a match |
|
9 | * |
|
10 | * @param string|\Psecio\Invoke\GroupInterface $data Group name or instance |
|
11 | * @return boolean Pass/fail status of the evaluation |
|
12 | */ |
|
13 | public function evaluate($data) |
|
14 | { |
|
15 | $groups = $this->getConfig('data'); |
|
16 | $userGroups = $data->user->getGroups(); |
|
17 | ||
18 | // If any are objects, transform to strings |
|
19 | foreach ($userGroups as $index => $group) { |
|
20 | $userGroups[$index] = ($group instanceof \Psecio\Invoke\GroupInterface) |
|
21 | ? $group->getName() : $group; |
|
22 | } |
|
23 | ||
24 | // Find the intersection |
|
25 | $match = array_intersect($groups, $userGroups); |
|
26 | return (count($match) === count($groups)); |
|
27 | } |
|
28 | } |
@@ 5-29 (lines=25) @@ | ||
2 | ||
3 | namespace Psecio\Invoke\Match\User; |
|
4 | ||
5 | class HasPermission extends \Psecio\Invoke\MatchInstance |
|
6 | { |
|
7 | /** |
|
8 | * Evaluate the provided permission instance (or name) against provided |
|
9 | * for a match |
|
10 | * |
|
11 | * @param string|\Psecio\Invoke\PermissionInterface $data Permission data |
|
12 | * @return boolean Pass/fail status of evaluation |
|
13 | */ |
|
14 | public function evaluate($data) |
|
15 | { |
|
16 | $permissions = $this->getConfig('data'); |
|
17 | $userPermissions = $data->user->getPermissions(); |
|
18 | ||
19 | // If any are objects, transform to strings |
|
20 | foreach ($userPermissions as $index => $permission) { |
|
21 | $userPermissions[$index] = ($permission instanceof \Psecio\Invoke\PermissionInterface) |
|
22 | ? $permission->getName() : $permission; |
|
23 | } |
|
24 | ||
25 | // Find the intersection |
|
26 | $match = array_intersect($permissions, $userPermissions); |
|
27 | return (count($match) === count($permissions)); |
|
28 | } |
|
29 | } |