Sha256: ac91da1eb2becb27aad72a080c9181fad9ee25a3181e71a04d36d3636fc7d630
Contents?: true
Size: 827 Bytes
Versions: 8
Compression:
Stored size: 827 Bytes
Contents
# frozen_string_literal: true class Rage::OriginValidator def initialize(app, *allowed_origins) @app = app @validator = build_validator(allowed_origins) end def call(env) if @validator.call(env) @app.call(env) else Rage.logger.error("Request origin not allowed: #{env["HTTP_ORIGIN"]}") [404, {}, ["Not Found"]] end end private def build_validator(allowed_origins) if allowed_origins.empty? ->(env) { false } else origins_eval = allowed_origins.map { |origin| origin.is_a?(Regexp) ? "origin =~ /#{origin.source}/.freeze" : "origin == '#{origin}'.freeze" }.join(" || ") eval <<-RUBY ->(env) do origin = env["HTTP_ORIGIN".freeze] #{origins_eval} end RUBY end end end
Version data entries
8 entries across 8 versions & 1 rubygems