Настройка доступа к страницам элементам по группам доступа

Друзья, помогите пожалуйста разобраться с доступом к страницам и элементам на страницах. Изучил материалы, в них показанно настройка групп через настройку страницы - не смог найти данную опцию (видимо описан старый интерфейс).
В AUTH группы настроил:


не могу найти настройку страницы в интерфейсе:

в обучении Настройка доступа к данным по ролям на AppMaster.io | AppMaster выглядит так:


Подскажите как настроить доступ к страницам\элементам или где посмотреть инструкцию

В старом редакторе была жесткая привязка к профилю пользователя между бэкендом и фронтендом. После перехода на новую версию ее больше нет.

Правильный подход получать профиль пользователя при загрузке страницы и включать пункт меню есть у него есть соответствующие права.

1 Like

Олег, добрый день можно где либо посмотреть образец или прочесть последовательность команд и запросов для корректного управления доступами.

Схема примерно такая.


Тут важно, что при авторизации пользователя его профиль записывается в глобальную переменную.
После этого в нужный момент идет проверка - является ли пользователь админом (или кем необходимо в вашем варианте).
При появлении меню можно запускать процесс, который обработает все пункты данного меню. Общедоступные оставит как есть, а по выбранным (в данном примере menu 1 и menu 2) установит видимость в соответствии с ролью пользователя.

Не забывайте только, что любые подобные действия в веб-приложении влияют прежде всего на визуальную составляющую. То есть пользователь просто не видит то, что ему не показывают. Для полноценной защиты нужно настраивать ограничения на уровне эндпойнтов и запускать проверки в процессах бекэнда.

1 Like

Добрый день.

  1. Спасибо благодаря Вашим рекомендациям все получилось.

  2. Начал пробывать различные варианты, нашел следующий способ построения БП в Веб, хотелось бы Вашей оценки на сколько корректно применять данный способ:

  3. Также попробывал перенести данное решение в БЭК, т.к. применение данного БП будет постоянным для разных объектов Веб, столкнулся со сложностью: При передаче Глобальной переменной allowed через GET она пустая, подскажите, что делаю не правильно:

В верхнем set variable назначаю false
В нижнем set variable назначаю true

Скорее всего цикл, как таковой, не проходит. Вы проверяете первое значение из массива и сразу приходите в блок end. Соответственно и передается не результат проверки массива, а результат проверки первой го записи.
Нужно либо использовать in array, либо, если делать это все таки массивом, то при нахождении подходящего значения ставить allowed = true, а затем блок break loop (завершать цикл, так как нужный результат найден).
Allowed = false вообще ставить не нужно. Это значение по умолчанию, которое и останется таковым, если не будет установлено true.
завершать выполнение процесса следует используя коннектор из completed. То есть цикл отрабатывает полностью и тогда уже процесс идет в end.

Попробывал сделать через in array, при выборе любого пользователя, постоянно выдает FALSE, подскажите пожалуйста, что теперь неправильно:

Скрин из БП, в Веб постоянно выдает FALSE

Current_User - переменная, в нее данные входят - проверил.

  1. Если используете процесс бекенда, то нет необходимости передавать туда текущего пользователя. Лучше прямо на беке использовать блок Auth: Get Current User.
  2. Блок For Each Loop вообще не нужен. У вас нет цикла, нужна лишь разовая проверка, есть данные в массиве или нет. Если же нужен цикл, то используйте выход Completed. Блок End должен идти после Completed, а не в процессе цикла.
  3. Вероятно, неправильная логика использования блока InArray. Обычно в Array подается сам массив который проверяете (в данном случае группы пользователя), а в item проверяемое значение (одна из групп, которые обладают админскими правами).
    В вашем случае можно сделать 3 отдельные проверки.
    Либо же оставить цикл, но тогда в цикле нормально использовать set variable и break loop с выходом из completed в конце поиска.