blob: 1fb6013c8d152a8516b2e131dbaeab39a0d36d3f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<?php
namespace Icinga\Module\Director\Auth;
use Icinga\Authentication\Auth;
use Icinga\Data\Filter\Filter;
class MonitoringRestriction
{
public static function getObjectsFilter(Auth $auth): Filter
{
$restriction = Filter::matchAny();
$restriction->setAllowedFilterColumns([
'host_name',
'hostgroup_name',
'instance_name',
'service_description',
'servicegroup_name',
function ($c) {
return preg_match('/^_(?:host|service)_/i', $c);
}
]);
foreach ($auth->getRestrictions(Restriction::MONITORING_RW_OBJECT_FILTER) as $filter) {
if ($filter === '*') {
return Filter::matchAll();
}
$restriction->addFilter(Filter::fromQueryString($filter));
}
if ($restriction->isEmpty()) {
return Filter::matchAll();
}
return $restriction;
}
}
|