Права доступа на основе области запроса

Ответить
sanyasi
Активный участник
Сообщения: 115
Зарегистрирован: 18 ноя 2009, 11:31
Репутация: 0

Права доступа на основе области запроса

Сообщение sanyasi » 03 июн 2012, 21:47

Есть postgis база с устройствами. Требуется ограничить доступ разных пользователей к разным частям этой карты. Например пользователь Москва - может просматривать и редактировать только в своём городе устройства.

Есть ли решения? Можно ли view такой сделать?

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Права доступа на основе области запроса

Сообщение rhot » 04 июн 2012, 09:32

Всё стандартно: создаёте view, назначаете права.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

yellow-sky
Гуру
Сообщения: 588
Зарегистрирован: 30 мар 2009, 21:53
Репутация: 55
Откуда: Королев

Re: Права доступа на основе области запроса

Сообщение yellow-sky » 04 июн 2012, 10:18

Стандартно ровно до того момента, пока не появится надобность редактировать эти вьюхи.
По умолчанию все вьюхи в постгресе - только на чтение. Для возможности редактировать их, придется создать еще три правила DO INSTEAD, для ON INSERT, ON UPDATE, ON DELETE. Вот тут главное не запутаться, и посмотреть как qgis делает эти операции :)

Аватара пользователя
rhot
Гуру
Сообщения: 1727
Зарегистрирован: 25 янв 2011, 17:50
Репутация: 194
Ваше звание: доктор
Откуда: Архангельск

Re: Права доступа на основе области запроса

Сообщение rhot » 04 июн 2012, 10:32

yellow-sky, ну это само собой разумеющееся, в Postgres по-другому нельзя :) View использует систему правил (rules), т.е. views это упрощённый вариант rules.
___________(¯`·.¸(¯`·.¸ Scientia potentia est _/ {SILVA}:::{FOSS}:::{GIS} \_ Знание сила ¸.·´¯)¸.·´¯)___________

yellow-sky
Гуру
Сообщения: 588
Зарегистрирован: 30 мар 2009, 21:53
Репутация: 55
Откуда: Королев

Re: Права доступа на основе области запроса

Сообщение yellow-sky » 04 июн 2012, 10:39

Да, но тут большое значение играет именно написание этих правил :). Потому как не зная какие будут запросы на обновление и добавление, правильно оформить их, не получится. Профайлер в руки, так сказать, и вперед :)

sanyasi
Активный участник
Сообщения: 115
Зарегистрирован: 18 ноя 2009, 11:31
Репутация: 0

Re: Права доступа на основе области запроса

Сообщение sanyasi » 04 июн 2012, 10:39

Сделал
REATE OR REPLACE VIEW trz AS
SELECT * from devices where st_dwithin(the_geom,'0101000020E6100000B9F30550EA7C414020327E2082874C40', 0.2);

INSERT INTO geometry_columns
(f_table_catalog,f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, type)
values
('','public', 'trz', 'the_geom', 2, 4326, 'POINT');


При добавлении таблицы в qgis предлагается выбрать первичный ключ таблицы... без его выбора не добавляется этот view.
Кроме того постгис-менеджер показывает что нет пространственного индекса итд.

yellow-sky
Гуру
Сообщения: 588
Зарегистрирован: 30 мар 2009, 21:53
Репутация: 55
Откуда: Королев

Re: Права доступа на основе области запроса

Сообщение yellow-sky » 04 июн 2012, 10:43

Про первичный ключ - да, это особенность новой версии qgis. В 1.7 можно было не выбирать явно.
Если пространственный индекс есть у родительской таблицы, то все нормально, он будет использоваться.

Ответить

Вернуться в «PostGIS/PostgreSQL»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей