Sha256: a0e8fba729bcb405ce281c153d7b4ce92dab03a1c81f97bde74166b609d63d59

Contents?: true

Size: 1.28 KB

Versions: 17

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module ActionPolicy
  module Behaviours
    # Adds `authorized_scop` method to behaviour
    module Scoping
      # Apply scope to the target of the specified type.
      #
      # NOTE: policy lookup consists of the following steps:
      #   - first, check whether `with` option is present
      #   - secondly, try to infer policy class from `target` (non-raising lookup)
      #   - use `implicit_authorization_target` if none of the above works.
      def authorized_scope(target, type: nil, as: :default, scope_options: nil, **options)
        options[:context] && (options[:context] = authorization_context.merge(options[:context]))

        policy = policy_for(record: target, allow_nil: true, **options)
        policy ||= policy_for(record: implicit_authorization_target!, **options)

        type ||= authorization_scope_type_for(policy, target)
        name = as

        Authorizer.scopify(target, policy, type:, name:, scope_options:)
      end

      # For backward compatibility
      alias_method :authorized, :authorized_scope

      # Infer scope type for target if none provided.
      # Raises an exception if type couldn't be inferred.
      def authorization_scope_type_for(policy, target)
        policy.resolve_scope_type(target)
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
action_policy-0.7.3 lib/action_policy/behaviours/scoping.rb
action_policy-0.7.2 lib/action_policy/behaviours/scoping.rb
action_policy-0.7.1 lib/action_policy/behaviours/scoping.rb
action_policy-0.7.0 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.9 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.8 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.7 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.6 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.5 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.4 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.3 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.2 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.1 lib/action_policy/behaviours/scoping.rb
action_policy-0.6.0 lib/action_policy/behaviours/scoping.rb
action_policy-0.5.7 lib/action_policy/behaviours/scoping.rb
action_policy-0.5.6 lib/action_policy/behaviours/scoping.rb
action_policy-0.5.5 lib/action_policy/behaviours/scoping.rb