lib/proxes/policies/request_policy.rb in proxes-0.4.0 vs lib/proxes/policies/request_policy.rb in proxes-0.4.1

- old
+ new

@@ -1,6 +1,7 @@ # frozen_string_literal: true + require 'proxes/db' require 'proxes/models/permission' require 'proxes/services/logger' require 'proxes/helpers/indices' @@ -14,34 +15,27 @@ @user = user @record = record end def method_missing(method_sym, *arguments, &block) - if method_sym.to_s[-1] == '?' - return false if user.nil? + return super if method_sym.to_s[-1] != '?' - if record.indices? - return true if index_allowed? - else - return true if action_allowed? method_sym[0..-2].upcase - end - false - else - super - end + return false if user.nil? + return true if record.indices? && index_allowed? + action_allowed? method_sym[0..-2].upcase end def index_allowed? patterns = Permission.for_user(user, 'INDEX').map do |permission| - permission.pattern.gsub(/\{user.(.*)\}/) { |match| user.send(Regexp.last_match[1].to_sym) } + permission.pattern.gsub(/\{user.(.*)\}/) { |_match| user.send(Regexp.last_match[1].to_sym) } end - return filter(record.index, patterns).count.positive? + filter(record.index, patterns).count.positive? end def action_allowed?(action) # Give me all the user's permissions that match the verb Permission.for_user(user, action).each do |permission| - return true if record.path =~ %r{#{permission.pattern}} + return true if record.path =~ /#{permission.pattern}/ end false end def respond_to_missing?(name, _include_private = false)