Пространственное ограничение доступа к ресурсам

Дополнительно права доступа к данным сервера можно ограничить пространственным фильтром, состоящим из одного или нескольких полигональных объектов, хранящихся в одном из слоев на сервере. В этом случае, при наличии прочих прав, пользователь имеет доступ только к тем графическим объектам, которые удовлетворяют условию пространственного фильтра.

Пример пространственного фильтра

Рисунок 27. Пример пространственного фильтра


Информация о пространственных ограничениях доступа к данным той или иной папки, содержится в секциях restricted-area файла .zsaccess, расположенного в этой же папке. При этом ограничения распространяются на все данные этой папки.

В секции restricted-area параметрами user и group указывается, на кого распространяется пространственное ограничение. Параметры user и group могут встречаться в каждой секции restricted-area многократно.

Если секция restricted-area не содержит параметров user или group, то указанное пространственное ограничение относится к любому пользователю, обратившемуся к данным.

Параметр criterium задает условие пересечения с полигональным объектом и может принимать следующие значения:

Таблица 5. Значения criterium

Значение

Описание

full-inside

объект полностью расположен внутри полигона

full-or-part-inside

объект полностью или частично расположен внутри полигона

full-outside

объект полностью расположен вне полигона

full-or-part-outside

объект полностью или частично расположен вне полигона


Если критерий не указан, по умолчанию принимается full-inside.

Секция region, входящая в секцию restricted-area, описывает местонахождение полигонов для фильтра.

Параметр layer секции region содержит полный или относительный (относительно данной папки) путь к слою, в котором находятся полигональные объекты.

Параметр id секции region содержит список ключей ID (разделенных пробелами) полигональных объектов из указанного слоя. Параметр id может встречаться в каждой секции region многократно.

Каждая секция restricted-area может содержать несколько секций region.

Пользователь или группа могут входить в несколько секций restricted-area. В этом случае полигоны, составляющие область ограничения для данного пользователя объединяются, а критерием пересечения с объединенной областью будет критерий из последней секции restricted-area, относящейся к данному пользователю.

[Предупреждение]Предупреждение

Оставить область видимой для пользователя, но при этом просто ограничить редактирование, можно с помощью параметра allow draw, добавленного в секцию restricted-area.

    # Фрагмент файла .zsaccess
<restricted-area> 
    user ivanov
    <region>
        layer ..\regions\district1.zl 
        id 3 7
    </region>
    <region>
        layer ..\regions\district2.zl
        id 1
    </region>
    criterium full-inside
    allow draw
</restricted-area>

<restricted-area>
    user ivanov sidorov
    user petrov
    <region>
        layer ..\regions\district1.zl
        id 10
    </region>
    criterium full-inside
</restricted-area>

<restricted-area>
    group restricted
    <region>
        layer ..\regions\district2.zl
        id 5 7
        id 6
    </region>
    criterium full-outside
</restricted-area>