Module: ActionController::PermissionsPolicy::ClassMethods

Defined in:
lib/action_controller/metal/permissions_policy.rb

Instance Method Summary collapse

Instance Method Details

#permissions_policy(**options, &block) ⇒ Object

Overrides parts of the globally configured ‘Feature-Policy` header:

class PagesController < ApplicationController
  permissions_policy do |policy|
    policy.geolocation "https://example.com"
  end
end

Options can be passed similar to ‘before_action`. For example, pass `only: :index` to override the header on the index action only:

class PagesController < ApplicationController
  permissions_policy(only: :index) do |policy|
    policy.camera :self
  end
end


27
28
29
30
31
32
33
34
35
# File 'lib/action_controller/metal/permissions_policy.rb', line 27

def permissions_policy(**options, &block)
  before_action(options) do
    if block_given?
      policy = request.permissions_policy.clone
      instance_exec(policy, &block)
      request.permissions_policy = policy
    end
  end
end