routeselixirphoenix-frameworkplug

Is there a way to have a Phoenix Plug just for one route?


In Phoenix I have my routes as follow :

  scope "/", ManaWeb do
    pipe_through [:browser, :auth]
    get "/register",  RegistrationController, :new
    post "/register", RegistrationController, :register
  end

However I would like to set a Plug for the last route (POST).

How would I go about that with current tools ?


Solution

  • As it is stated in the documentation for Phoenix.Router.pipeline/2

    Every time pipe_through/1 is called, the new pipelines are appended to the ones previously given.

    That said, this would work:

    scope "/", ManaWeb do
      pipe_through [:browser, :auth]
      get "/register",  RegistrationController, :new
    
      pipe_through :post_plug
      post "/register", RegistrationController, :register
    end