Introducing PolicyWonk - Elixir/Phoenix Authorization Library
PolicyWonk is a lightweight authorization and resource loading library for any Plug or Phoenix application. Authorization (Auth-Z) is the process of deciding what a user/entity is allowed to do after they’ve been authenticated.
PolicyWonk provides three main plugs.
-
PolicyWonk.LoadResourceloads resources into the conn’s assigns map. -
PolicyWonk.Enforceevaluates a specified policy. It either continues or halts the plug chain depending on the policy result. -
PolicyWonk.EnforceActionevaluates a policy for each incoming controller action in Phoenix.
Decisions are made before controller actions are called, isolating authorization logic, encouraging policy re-use, and reducing the odds of messing Auth-Z up as you develop your controllers.
In a router:
pipeline :browser_session do
plug PolicyWonk.LoadResource, :current_user
plug PolicyWonk.Enforce, :current_user
end
pipeline :admin do
plug PolicyWonk.Enforce, {:user_permission, "admin"}
end
In a controller:
plug PolicyWonk.Enforce, {:user_permission, "admin_content"}
plug PolicyWonk.EnforceAction
Check it out here:
Read next Actors vs Objects
