Как вы ограничиваете разрешения для конкретного действия с опекуном и фениксом
Я установил опекун для кодирования определенных разрешений в токене, однако я хотел бы ограничить это в моем 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]