Странная логика в проверке дополнительных прав доступа

1. fixin 4280 12.12.11 18:47 Сейчас в теме
В УТ для проверки прав доступа повсеместно используется код вида:

    РазрешеноПечатать = УправлениеПользователями.ПолучитьЗначениеПраваДляТекущегоПользователя(ПланыВидовХарактеристик.ПраваПользователей.ПечатьНепроведенныхДокументов, Ложь);
    Если РазрешеноПечатать.Количество() = 0 Тогда
        Возврат Ложь;
    ИначеЕсли РазрешеноПечатать.Количество() > 1 Тогда
        Возврат Истина;
    Иначе
        Возврат РазрешеноПечатать[0].Значение;
    КонецЕсли;
Показать


Довольно странное решение, учитывая, что функция ПолучитьЗначениеПраваДляТекущегоПользователя возвращает список значений, прочитанный для пользователя, для группы "Все пользователи" и для всех групп, куда входит пользователь.


По коду редактирования регистра дополнительных прав доступа видно, что в регистре сохраняются значения всех прав, даже тех, у которых стоит ложь.



Таким образом, если для группы пользователя право запрещено = ложь, и для пользователя право запрещено = ложь, тем не менее, анализ кода вернет истина, т.к. возвращается более чем одного значения... Это весьма глобальная ошибка, делающее использование групп пользователей опасным.



Хотя, возможно, я ошибаюсь, развейте мои страхи.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. anig99 2855 12.12.11 22:54 Сейчас в теме
Ошибки особой нет. Функция возвращает только уникальные значения. Т.е. всего 4 варианта: 1) пусто 2) истина 3) ложь и 4) истина/ложь. При этом Истина вроде как приоритет имеет вне зависимости где она стоит, в группе или пользователе. Т.е. если ложь стоит и в группе и в пользователе, то функция вернет список из 1 элемента - ложь. "Ошибка" тут в отсутствии приоритета значения показателя у пользователя над значением у группы. Да и то, это спорный вопрос подхода.
3. fixin 4280 13.12.11 10:31 Сейчас в теме
(2) я тащусь с типовописателей, не могли эту функцию вытащить в общий модуль, везде одна и та же скопипащенная логика, приведенная в примере... Жэсть.
4. kolya_tlt 89 13.12.11 12:35 Сейчас в теме
5. fixin 4280 13.12.11 13:50 Сейчас в теме
(4) В УТ 11 уже не так? Как там, нет под рукой, любопытно.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот