...

EQL поиск задач с учетом ограничения прав доступа

Тема в разделе "Вопросы по платформе", создана пользователем dskuznetcov, 26 ноя 2024.

  1. dskuznetcov

    dskuznetcov Участник

    Добрый день!
    Заметил необычную особенность при фильтрации задач в коде с помощью EQL (клиентский сценарий):
    Код:
    
    const tasks await System.processes._searchTasks()
                .
    from(0)
                .
    size(20)
                .
    where(=> f.__deletedAt.eq(null))
                .
    where("
    [performers] in (CurrentUser()) AND
    [__item] in (SELECT [__id] FROM [edms_objects.Contract] WHERE ([author] = '019e3a4b-0036-7900-b79e-ac01ca4b94673')"
    );
    В примере выше идет фильтрация задач текущего пользователя (Иванов И.И.), где нужно отобразить только те его задачи по договорам, автором которых является другой пользователь Петров П.П. Как я понял, ссылка на договор [edms_objects.Contract] хранится в системном поле задачи [__item].

    В итоге возникла интересная ситуация с правами доступа:
    1. Иванов И.И. имеет задачу TEST по договору Петрова П.П., к которому у первого нет доступа;
    2. При вызове _searchTasks() с указанным выше фильтром в выборке окажется задача TEST;
    3. В дальнейшем для Иванова И.И. в виджете выполняется RefItem("edms_objects", "Contract", id).fetch(), где id - идентификатор договора в задаче TEST;
    4. В результате RefItem(...).fech() ничего не возвращает, т.к. у Иванова И.И. нет доступа к договору Петрова П.П.

    Подскажите, пожалуйста, каким образом можно заставить _searchTasks() выполнить EQL поиск задач с учетом ограничения прав доступа?
  2. keriushenkova

    keriushenkova Новичок

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

    Выполнить EQL-поиск с учетом ограничения прав доступа нельзя.