Как вы ограничиваете разрешения для конкретного действия с опекуном и фениксом

Я установил опекун для кодирования определенных разрешений в токене, однако я хотел бы ограничить это в моем UserController просто требовать его на конкретные действия ([:index, :show, :edit, :update, :delete]). Я использую следующую строку в верхней части контроллера, чтобы потребовать admin: [:cms] разрешение для всего контроллера:

plug Guardian.Plug.EnsurePermissions, handler: Ay.Guardian.ErrorHandler, admin: [:cms]

Это прекрасно работает, но я хотел бы добавить к этому пункт типа "охранник" (например, when action in [:index, :show, :edit, :update, :delete]) но я не могу заставить это работать так, как я хочу.

Я понимаю, что могу легко проверять заявки в каждом действии, но из-за большого количества контроллеров мне нужен более общий подход.

1 ответ

Попробуйте вызвать плагин так:

plug Guardian.Plug.EnsurePermissions, [handler: Ay.Guardian.ErrorHandler, admin: [:cms]] when action in [:index, :show, :edit, :update, :delete]

( [] важные!)

Чтобы сделать его немного более читабельным, попробуйте alias вилка вроде:

alias Guardian.Plug.EnsurePermissions

plug EnsurePermissions, [handler: Ay.Guardian.ErrorHandler, admin: [:cms]] when action in [:index, :show]
Другие вопросы по тегам