Открыто доступ к пунктам toolbar menu

Главные вкладки

Аватар пользователя mmjmm mmjmm 11 января 2023 в 12:02

Здравствуйте. С помощью своего модуля я добавляю пункты меню в toolbar menu с использованием файла links.menu.yml.
Мне необходимо открыть доступ к этим пунктам аутентифицированным пользователям, не обладающим ролью администратора. При этом доступ к остальным пунктам (конфигурации, содержимое и тд) запретить. Подскажите, пожалуйста, как такое можно сделать?

Комментарии

Аватар пользователя Andruxa Andruxa 11 января 2023 в 12:24

В modulename.links.menu.yml указаны параметры route_name для каждого пункта меню.
В modulename.routing.yml нужно для каждого такого route_name указать

  requirements:
    _custom_access: 'коллбек, возвращающий AccessResultInterface'

коллбек можно сделать функцией в файле modulename.access.php или методом контроллера/формы, и там проверять \Drupal::currentUser()->hasRole()

Но, вообще, ограничивать доступ админам - так себе идея, на то они и админы.

Аватар пользователя mmjmm mmjmm 11 января 2023 в 13:45

Спасибо) Попробую. Вы не совсем так поняли, либо я некорректно задал вопрос. Администратору я не хочу ограничивать какой-либо доступ. Только аутентифицированным пользователям, не являющимися админом.

Аватар пользователя gun_dose gun_dose 11 января 2023 в 14:22

Это из коробки работает без всяких дополнительных настроек. Нужно просто дать ролям разрешение использовать Toolbar и у каждого, у кого есть разрешение использовать Toolbar, будет тот список ссылок, к которым у пользователя есть доступ. Сам доступ задаётся не в ссылках меню, а в роутах.

Аватар пользователя Andruxa Andruxa 11 января 2023 в 14:32
1

Насколько я понял - ему надо разрешить доступ к пунктам меню всем зарегистрированным пользователям, кроме админов, которые тоже являются зарегистрированными пользователями.