Sha256: d378b52d365b7dccca2a6cabef106f463991197332a77da45260b73cefedab03

Contents?: true

Size: 853 Bytes

Versions: 3

Compression:

Stored size: 853 Bytes

Contents

# frozen_string_literal: true

require 'active_support'
require 'active_support/core_ext/object/blank'

module ProxES
  module Helpers
    module Indices
      def filter(asked, against)
        return against.map { |a| a.gsub(/\.\*/, '*') } if asked == ['*'] || asked.blank?

        answer = []
        against.each do |pattern|
          answer.concat(asked.select { |idx| idx =~ /#{pattern}/ })
        end
        answer
      end

      def patterns
        return [] if user.nil?
        patterns_for('INDEX').map do |permission|
          return nil if permission.pattern.blank?
          permission.pattern.gsub(/\{user.(.*)\}/) { |_match| user.send(Regexp.last_match[1].to_sym) }
        end.compact
      end

      def patterns_for(action)
        return [] if user.nil?
        Permission.for_user(user, action)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
proxes-0.9.9 lib/proxes/helpers/indices.rb
proxes-0.9.7 lib/proxes/helpers/indices.rb
proxes-0.9.4 lib/proxes/helpers/indices.rb