我已设置监护人来对令牌中的特定权限进行编码,但是,我想在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]
),但我似乎无法按照我想要的方式工作。
我意识到我可以轻松检查每个动作中的声明,但由于控制器数量众多,我希望采用更通用的方法。
答案 0 :(得分:2)
Try calling the plug like this:
plug Guardian.Plug.EnsurePermissions, [handler: Ay.Guardian.ErrorHandler, admin: [:cms]] when action in [:index, :show, :edit, :update, :delete]
(the []
are important!)
To make it a bit more readable try alias
the plug like:
alias Guardian.Plug.EnsurePermissions
plug EnsurePermissions, [handler: Ay.Guardian.ErrorHandler, admin: [:cms]] when action in [:index, :show]