Странная логика в проверке дополнительных прав доступа
В УТ для проверки прав доступа повсеместно используется код вида:
Довольно странное решение, учитывая, что функция ПолучитьЗначениеПраваДляТекущегоПользователя возвращает список значений, прочитанный для пользователя, для группы "Все пользователи" и для всех групп, куда входит пользователь.
По коду редактирования регистра дополнительных прав доступа видно, что в регистре сохраняются значения всех прав, даже тех, у которых стоит ложь.
Таким образом, если для группы пользователя право запрещено = ложь, и для пользователя право запрещено = ложь, тем не менее, анализ кода вернет истина, т.к. возвращается более чем одного значения... Это весьма глобальная ошибка, делающее использование групп пользователей опасным.
Хотя, возможно, я ошибаюсь, развейте мои страхи.
РазрешеноПечатать = УправлениеПользователями.ПолучитьЗначениеПраваДляТекущегоПользователя(ПланыВидовХарактеристик.ПраваПользователей.ПечатьНепроведенныхДокументов, Ложь);
Если РазрешеноПечатать.Количество() = 0 Тогда
Возврат Ложь;
ИначеЕсли РазрешеноПечатать.Количество() > 1 Тогда
Возврат Истина;
Иначе
Возврат РазрешеноПечатать[0].Значение;
КонецЕсли;
ПоказатьДовольно странное решение, учитывая, что функция ПолучитьЗначениеПраваДляТекущегоПользователя возвращает список значений, прочитанный для пользователя, для группы "Все пользователи" и для всех групп, куда входит пользователь.
По коду редактирования регистра дополнительных прав доступа видно, что в регистре сохраняются значения всех прав, даже тех, у которых стоит ложь.
Таким образом, если для группы пользователя право запрещено = ложь, и для пользователя право запрещено = ложь, тем не менее, анализ кода вернет истина, т.к. возвращается более чем одного значения... Это весьма глобальная ошибка, делающее использование групп пользователей опасным.
Хотя, возможно, я ошибаюсь, развейте мои страхи.
По теме из базы знаний
- 1С:Управление металлургическим комбинатом 2. Модуль для 1С:ERP
- Загрузка документов из Excel в 1С: УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Переход с 1С:УПП на1C:ERP: Перенос остатков и затянувшееся начало работы в ЕРП
- Быстрый фронт в базе размером 8.8 терабайт – наши стандарты при разработке компонентов системы
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ошибки особой нет. Функция возвращает только уникальные значения. Т.е. всего 4 варианта: 1) пусто 2) истина 3) ложь и 4) истина/ложь. При этом Истина вроде как приоритет имеет вне зависимости где она стоит, в группе или пользователе. Т.е. если ложь стоит и в группе и в пользователе, то функция вернет список из 1 элемента - ложь. "Ошибка" тут в отсутствии приоритета значения показателя у пользователя над значением у группы. Да и то, это спорный вопрос подхода.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот