Sha256: 1bdc77c9541c5868e7014653df318dddcc6e80d03ca8f2fa2a38c67e8e84abc0

Contents?: true

Size: 729 Bytes

Versions: 7

Compression:

Stored size: 729 Bytes

Contents

# frozen_string_literal: true

require 'ditty/db'
require 'proxes/models/permission'
require 'proxes/policies/request_policy'

module ProxES
  class Request
    class IndexPolicy < RequestPolicy
      class Scope < RequestPolicy::Scope
        def resolve
          return [] if user.nil?
          patterns = Permission.for_user(user, 'INDEX').map do |permission|
            permission.pattern.gsub(/\{user.(.*)\}/) do |_match|
              user.send(Regexp.last_match[1].to_sym)
            end
          end
          result = filter(request.index, patterns)
          return [] unless result.count > 0
          %w[POST PUT].include?(request.request_method) ? request.index : result
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
proxes-0.9.2 lib/proxes/policies/request/index_policy.rb
proxes-0.9.1 lib/proxes/policies/request/index_policy.rb
proxes-0.9.0 lib/proxes/policies/request/index_policy.rb
proxes-0.8.6 lib/proxes/policies/request/index_policy.rb
proxes-0.8.5 lib/proxes/policies/request/index_policy.rb
proxes-0.8.4 lib/proxes/policies/request/index_policy.rb
proxes-0.8.3 lib/proxes/policies/request/index_policy.rb