Внешняя обработка для администратора, которому пользователь прислал голое "Нарушение прав доступа!" и больше ничего. В этот момент платформа сама пишет в журнал регистрации, на каком объекте и каком праве отказала. Обработка читает эти события и для каждого отказа называет группу доступа, после добавления в которую он пропадёт.
Зачем это нужно: обычная реакция на отказ - выдать роль пошире или полные права "на время". Это снимает жалобу и открывает пользователю лишнее. Здесь ответ другой: какое право не сработало, какие роли его дают, в каких профилях эти роли лежат и какая группа из подходящих самая узкая.
Что показывает
- Итог одной строкой. Сколько отказов у скольких пользователей, сколько снимается одной правкой и сколько требует решения администратора.
- Таблица отказов. Повторы свёрнуты в строку "пользователь + объект + право", у каждой строки цветной вердикт: "Добавить в группу", "Право уже есть", "Чинить код", отдельные вердикты для внешних обработок.
- Разбор выбранной строки. Что сделать крупно, путь по шагам ("Администрирование - Настройки пользователей и прав - Группы доступа - ..."), подходящие группы с числом ролей в профиле, роли с этим правом, что записано в журнале.
- Замечания там, где решение неочевидно. Если предложенная группа даёт только чтение, обработка назовёт группу на запись. Для документа проверит, даст ли группа и проведение.
- Внешние обработки. Неудачное открытие платформа пишет отдельным событием с причиной. Обработка различает нет права на открытие, защиту от опасных действий, безопасный режим и профиль безопасности кластера.
- Выгрузка в Markdown для нейросети. Файл с разбором всех отказов, имена пользователей заменены на "Пользователь 1", "Пользователь 2", путей к файлам нет.
Как работает
- Проверяет журнал регистрации: выключен, пишет только ошибки или отключено событие отказа - говорит об этом красным.
- Читает события отказа доступа и неудачного подключения внешних обработок за период.
- Для каждой строки проверяет, есть ли право у пользователя сейчас, какие роли его дают, какие профили групп доступа БСП содержат эти роли и какие группы построены на этих профилях.
- Предлагает группу с самым узким профилем. Группы администраторов, личные группы и служебные роли не предлагает.
- Если право дают только административные и служебные роли, пишет "Чинить код": такой отказ лечится в модуле, а не в правах.
Ничего в базе не меняет, только читает журнал, роли и справочники доступа. Запускать под администратором.
Частые вопросы
Откуда обработка знает объект и право, если пользователь видит только "Нарушение прав доступа!"?
Платформа сама пишет событие "Доступ. Отказ в доступе" в журнал регистрации: объект в колонке "Метаданные", имя права в данных события. Настраивать ничего не надо, так по умолчанию.
Почему отказов нет, хотя пользователь жалуется?
Журнал пишет только ошибки (отказ записывается уровнем "Информация", обработка предупредит), отказ был раньше периода или журнал сократили. Либо это вообще не отказ: ограничение на уровне записей в списках молча прячет строки и ничего не пишет.
Как выбирается группа доступа?
Роли с нужным правом, профили с этими ролями, группы с этими профилями. Побеждает группа, у профиля которой меньше всего ролей: пользователь получает нужное и минимум лишнего.
Обработка сама добавит пользователя в группу?
Нет. Только читает и говорит, что сделать. Права меняет администратор, осознанно.
Что значит "Право уже есть"?
Право выдали после отказа, пользователю надо перезапустить программу: роли применяются при входе. Если в базе включено ограничение на уровне записей, причина может быть в значениях доступа групп.
Что значит "Чинить код"?
Право дают только административные или служебные роли. Так отказывает код, который обращается к таблице или к списку пользователей без привилегированного режима. Выдавать пользователю администрирование нельзя, искать надо модуль из стека ошибки.
Не открывается внешняя обработка: что покажет?
Причину из журнала: нет права, защита от опасных действий, безопасный режим или профиль безопасности. С выбранным пользователем скажет, может ли он вообще открывать внешние обработки, даже когда событий нет.
Работает без БСП?
Да, тогда вместо группы предлагает роль: ту, что даёт чтение меньшего числа справочников и документов.
На чём проверялась
Управление торговлей 11.5.22, БСП 3.1.11, платформа 8.3.27, клиент-серверный вариант. Отказы вызывались под урезанным тестовым пользователем. Пять отказов, для которых обработка предложила группу, после добавления в неё пропали и из ответа сеанса пользователя, и из журнала; отказы, которые правами не лечатся, получили "Чинить код". Событие отказа в журнале есть и на платформе 8.3.20. На скриншотах рабочий журнал, имена пользователей закрыты.
Что в файле
Внешняя обработка (.epf) на управляемых формах, собрана и проверена на платформе 8.3.27. Открывается через "Файл - Открыть", встраивать в конфигурацию не нужно. Код открыт.
Как устроено событие отказа, что пишется в журнал и что нет, как от права дойти до группы доступа и почему отказы приходят слоями - в статье-паровозе к этой обработке: "Нарушение прав доступа: где платформа записала, чего именно не хватило".
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.67
Вступайте в нашу телеграмм-группу Инфостарт