Страница 1 из 1

Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 07:05
boa-ig
Подскажите пожалуйста.
Есть слои, нужно пользоваетлям разрешить доступ на просмотр и редактирования только части территории в виде полигона.
Т.е. я рисую полигон и пользователь видит(или может редактировать) только то, что есть внутри полигона.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 07:25
gamm
такое можно делать в базе, создав View (виртуальный слой) на основе пространственного запроса.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 08:16
Ivor
gamm, на просмотр - да, а вот редактировать... Сразу навскидку возникает пара вопросов, которые скорее всего нерешаемы. Например, удаление объектов, лежащих за пределами разрешённой площади. Или изменения, опять же влияющие на объекты вовне.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 09:01
chet2
boa-ig, я создал бы несколько слоев.
Разным пользователям можно было бы редактировать только свои слои.
Далее с помощью sql-запроса я объединил бы все слои в одно представление (view, ”вьюху”) чтобы можно было видеть общую картину.
Это не то что вы спрашивали, просто описал один из вариантов решения вопроса.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 09:16
gamm
Ivor писал(а):
23 авг 2021, 08:16
которые скорее всего нерешаемы
решаемы, для этого в базе придумали триггеры/демоны/хранимые процедуры. Что требует некоторой работы, конечно.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 09:44
Ivor
gamm, вопрос в том, имеет ли право пользователь своими действиями внутри области менять геометрию за её пределами. На всякие неочевидные мелочи никаких триггеров не напасёшься, и ворочаться это будет очень тяжело.Особенно поддержка топологии.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 09:53
boa-ig
Вроде встречал функцию, которую можно встаить в select, а на нее сосздать View, но не помню какая функция.
Если разбросать по разным слоям (таблицам), то во вркемя перемещения по карте нужно будет подгружать из разных таблиц для тех у кого есть доступ на все.
Самый хороший вариант перехватывать select на стадии выполнения и в зависимости от привилегий пользователя добавлять функцию по которой видно только те объекты которые входят внутрь за ранее заданного полигона или пересекают его.
Не пойму как написать такой select (какая функция).
....
можно применять правила (разбить пользователей по ролям, а для ролей присвоить правила)
CREATE [ OR REPLACE ] RULE имя AS ON событие ....
Грубо говоря, правило описывает дополнительные команды, которые будут выполняться при вызове определённой команды для определённой таблицы.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 10:07
Ivor
boa-ig, а как точно выглядит задача? Может искомое реализуется более простыми методами

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 10:20
boa-ig
Есть таблица, в ней геометрия в виде полигонов(город) разбитый на 3 района,
Есть пользователь Р1 (район 1), Р2 (район 2), Р3 (район 3).
Нужно:
V1 - Р1 видитвсе района но редактировать только свой
V2 - Р1 видит только район 1 и редактировать может только его
Аналогично по Р2,Р3.
Есть пользователь которим разрешено все по всем районам.
....
таблиц на самом деле больше, то понять на самом простом примере
.....
по сути классическая задача вертикальное/горизонтальное предоставление привилегий.

Re: Привилегии пользователя на часть карты(слоя)? в виде полигона.

Добавлено: 23 авг 2021, 10:34
Ivor
boa-ig, а если просто разделить таблицы по районам?