Module: Rodauth::Rails::App::Middleware

Defined in:
lib/rodauth/rails/app/middleware.rb

Overview

Roda plugin that extends middleware plugin by propagating response headers.

Class Method Summary collapse

Class Method Details

.configure(app) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/rodauth/rails/app/middleware.rb', line 6

def self.configure(app)
  handle_result = -> (env, res) do
    if headers = env.delete("rodauth.rails.headers")
      res[1] = headers.merge(res[1])
    end
  end

  app.plugin :middleware, handle_result: handle_result do |middleware|
    middleware.plugin :hooks

    middleware.after do
      if response.empty? && response.headers.any?
        env["rodauth.rails.headers"] = response.headers
      end
    end

    middleware.class_eval do
      def self.inspect
        "#{superclass}::Middleware"
      end

      def inspect
        "#<#{self.class.inspect} request=#{request.inspect} response=#{response.inspect}>"
      end
    end
  end
end