Ограниченный доступ на чтение записи

Добрый день, коллеги!

Каким образом можно решить подобную задачу по ограничению прав доступа - если у пользователя есть права на редактирование записи (например, контрагента), то ему доступны все поля (где нет ограничений по колонкам), если есть доступ на чтение, то эти же поля доступны только для чтения.
Но если на запись нужно дать ограниченный доступ на чтение, то доступен другой набор полей (например, Название, Код и Ответственный).

В каком VIEW ограничить набор колонок и каким признаком лучше выдавать "ограниченный" набор?

Спасибо!

Нравится

10 комментариев

Здравствуйте!

Что вы имеете ввиду под "ограниченным" доступом?

"Мотков Илья" написал:Что вы имеете ввиду под "ограниченным" доступом?

Приведу пример. Я как ответственный менеджер за контрагента "X" могу видеть и редактировать его карточку (и все поля в ней). А в других контрагентах (где ответственный не я) я могу видеть только 3 поля - название, код и ответственного.

Стандартным функционалом (доступом по записям и колонкам) это не решить

Уже обсуждалось месяц назад, стандартного механизма нет. Только разработкой.
Возможно, в 7.10 можно будет нащёлкать мышкой такое бизнес-правило.

"Зверев Александр" написал:стандартного механизма нет.

Но существуют же VIEW, которые фильтруют доступ по записям? Если в этих VIEW уменьшить количество колонок при определенных условиях, то можно решить этот вопрос

Владимир, ну это же тоже будет доработка.:wink:

Кроме того, не представляю, как можно ограничить во view для каждого, а не одного конкретного пользователя. Это в 3.Х доступ по записям был сделан при помощи view с фильтрацией по SYSTEM_USER, а в 7.Х все пользователи системы работают с БД через одну учётку, прописанную в ConnectionStrings. Фильтры накладываются программно где-то внутри EntitySchemaQuery.

"Зверев Александр" написал:Владимир, ну это же тоже будет доработка

Да, всё тут доработка :D

"Зверев Александр" написал:Фильтры накладываются программно где-то внутри EntitySchemaQuery

Это уже сложнее, конечно.. Но, возможно, реализуемо. По крайней мере, это критично важно.

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

"Зверев Александр" написал:Нужно всего лишь наряду с механизмами в ядре по выдаче прав на объекты, на поля, на записи и на записи по умолчанию сделать ещё один.

Думаю, что в банковских проектах такое реализовывали. Осталось найти, кто :)

Думаю, нет. В ходе проекта такое реализуют скриптами под конкретное поле, согласно ТЗ.

Реализовывали программной доработкой. При этом советуем базовый механизмы не трогать. В основном реестре оставлять видимыми только те записи, где доступ полный. И делать отдельную вью с доступом на все записи. Обычно такое делают, если хотят избежать дублей для поиска. Ну вот по нажатию на кнопку "Поиск во всей базе" - открывать отдельную вью со всеми записями, но только тремя колонками. Но такое нельзя реализовать в самом разделе "Контрагенты"

 

Показать все комментарии