Друзья, помогите пожалуйста разобраться с доступом к страницам и элементам на страницах. Изучил материалы, в них показанно настройка групп через настройку страницы - не смог найти данную опцию (видимо описан старый интерфейс).
В AUTH группы настроил:
Тут важно, что при авторизации пользователя его профиль записывается в глобальную переменную.
После этого в нужный момент идет проверка - является ли пользователь админом (или кем необходимо в вашем варианте).
При появлении меню можно запускать процесс, который обработает все пункты данного меню. Общедоступные оставит как есть, а по выбранным (в данном примере menu 1 и menu 2) установит видимость в соответствии с ролью пользователя.
Не забывайте только, что любые подобные действия в веб-приложении влияют прежде всего на визуальную составляющую. То есть пользователь просто не видит то, что ему не показывают. Для полноценной защиты нужно настраивать ограничения на уровне эндпойнтов и запускать проверки в процессах бекэнда.
Также попробывал перенести данное решение в БЭК, т.к. применение данного БП будет постоянным для разных объектов Веб, столкнулся со сложностью: При передаче Глобальной переменной allowed через GET она пустая, подскажите, что делаю не правильно:
Скорее всего цикл, как таковой, не проходит. Вы проверяете первое значение из массива и сразу приходите в блок end. Соответственно и передается не результат проверки массива, а результат проверки первой го записи.
Нужно либо использовать in array, либо, если делать это все таки массивом, то при нахождении подходящего значения ставить allowed = true, а затем блок break loop (завершать цикл, так как нужный результат найден).
Allowed = false вообще ставить не нужно. Это значение по умолчанию, которое и останется таковым, если не будет установлено true.
завершать выполнение процесса следует используя коннектор из completed. То есть цикл отрабатывает полностью и тогда уже процесс идет в end.
Если используете процесс бекенда, то нет необходимости передавать туда текущего пользователя. Лучше прямо на беке использовать блок Auth: Get Current User.
Блок For Each Loop вообще не нужен. У вас нет цикла, нужна лишь разовая проверка, есть данные в массиве или нет. Если же нужен цикл, то используйте выход Completed. Блок End должен идти после Completed, а не в процессе цикла.
Вероятно, неправильная логика использования блока InArray. Обычно в Array подается сам массив который проверяете (в данном случае группы пользователя), а в item проверяемое значение (одна из групп, которые обладают админскими правами).
В вашем случае можно сделать 3 отдельные проверки.
Либо же оставить цикл, но тогда в цикле нормально использовать set variable и break loop с выходом из completed в конце поиска.