Class: Supabase::Rails::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/supabase/rails/middleware.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, auth: :user, env: nil, supabase_options: nil, cors: nil) ⇒ Middleware

Returns a new instance of Middleware.



9
10
11
12
13
14
15
# File 'lib/supabase/rails/middleware.rb', line 9

def initialize(app, auth: :user, env: nil, supabase_options: nil, cors: nil)
  @app = app
  @auth = auth
  @env_overrides = env
  @supabase_options = supabase_options
  @cors = cors
end

Instance Method Details

#call(env) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/supabase/rails/middleware.rb', line 17

def call(env)
  if cors_enabled? && env["REQUEST_METHOD"] == "OPTIONS"
    return [204, CORS.add_headers({}, @cors), []]
  end

  return @app.call(env) if env[Rails::CONTEXT_KEY]

  result = Rails.create_context(
    RackRequest.new(env),
    auth: @auth,
    env: @env_overrides,
    supabase_options: @supabase_options
  )

  return error_response(result.error) if result.failure?

  env[Rails::CONTEXT_KEY] = result.value
  status, headers, body = @app.call(env)
  headers = CORS.add_headers(headers, @cors) if cors_enabled?
  [status, headers, body]
end