module Charcoal::CrossOrigin

Public Class Methods

included(klass) click to toggle source
# File lib/charcoal/cross_origin.rb, line 5
def self.included(klass)
  klass.extend(ClassMethods)
  if klass.respond_to?(:around_action)
    klass.around_action :set_cors_headers_filter, if: :cors_allowed?
  else
    klass.around_filter :set_cors_headers_filter, if: :cors_allowed?
  end
end

Protected Instance Methods

allowed_origin() click to toggle source
# File lib/charcoal/cross_origin.rb, line 49
def allowed_origin
  value = Charcoal.configuration["allow-origin"]
  value.respond_to?(:call) ? value.call(self) : value.to_s
end
cors_allowed?() click to toggle source
# File lib/charcoal/cross_origin.rb, line 33
def cors_allowed?
  self.class.cors_allowed?(self, params[:action])
end
credentials_allowed?() click to toggle source
# File lib/charcoal/cross_origin.rb, line 54
def credentials_allowed?
  value = Charcoal.configuration["credentials"]
  value.respond_to?(:call) ? value.call(self) : value
end
set_cors_headers() click to toggle source
# File lib/charcoal/cross_origin.rb, line 43
def set_cors_headers
  headers["Access-Control-Allow-Origin"] = allowed_origin
  headers["Access-Control-Allow-Credentials"] = "true" if credentials_allowed?
  headers["Access-Control-Expose-Headers"] = Charcoal.configuration["expose-headers"].join(",")
end
set_cors_headers_filter() { || ... } click to toggle source
# File lib/charcoal/cross_origin.rb, line 37
def set_cors_headers_filter
  yield
ensure
  set_cors_headers
end