module Roda::RodaPlugins::SecFetchSiteCsrf
def self.configure(app, opts=OPTS, &block)
def self.configure(app, opts=OPTS, &block) options = app.opts[:sec_fetch_site_csrf] = (app.opts[:sec_fetch_site_csrf] || DEFAULTS).merge(opts) allowed_values = options[:allowed_values] = ["same-origin"] allowed_values << "same-site" if opts[:allow_same_site] allowed_values << "none" if opts[:allow_none] allowed_values << nil if opts[:allow_missing] allowed_values.freeze if block options[:csrf_failure] = :method app.define_roda_method(:_roda_sec_fetch_site_csrf_failure, 1, &app.send(:convert_route_block, block)) end case options[:csrf_failure] when :raise, :empty_403, :clear_session, :method # nothing else raise RodaError, "Unsupported :csrf_failure plugin option: #{options[:csrf_failure].inspect}" end options.freeze end