Sha256: ef6cdfa0194177e9afbe37abab2281360f1e8b785364d4fa15f8fb44904f068d

Contents?: true

Size: 1.18 KB

Versions: 18

Compression:

Stored size: 1.18 KB

Contents

# NOTE: mark user values with "$user.<attribute>$", e.g. "$user.bfsnr$"

class AccessFilter < ActiveRecord::Base
  belongs_to :role

  attr_protected []

  scope :for_roles, lambda { |roles| where(:role_id => roles.collect(&:id)) }

  def parse_condition
    if ["WMS", "WFS"].include?(resource_type)
      wms_condition = condition
      begin
        # try to parse as JSON
        wms_condition = JSON.parse(wms_condition)
      rescue => err
        Rails.logger.info "Could not parse #{resource_type} condition for #{role.name} #{resource} as JSON: #{err}"
      end
      wms_condition
    else
      condition
    end
  end

  def self.user_value(user, value)
    # replace "$user.<attribute>$" placeholders with user.app_infos[<attribute>] values
    user_attributes = value.to_s.scan(/\$user\.(\w+)\$/).flatten
    unless user_attributes.empty?
      if user.nil?
        # empty values if no user
        value.sub(/\$user\.(\w+)\$/, '')
      else
        user_attributes.each do |key|
          # replace placeholder with value from user.app_infos
          value.sub!(/\$user\.#{key}\$/, user.app_infos[key] || '')
        end
        value
      end
    else
      value
    end
  end

end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
gb_mapfish_appserver-2.0.0 app/models/access_filter.rb
gb_mapfish_appserver-1.1.1 app/models/access_filter.rb
gb_mapfish_appserver-1.1.0 app/models/access_filter.rb
gb_mapfish_appserver-1.0.6 app/models/access_filter.rb
gb_mapfish_appserver-1.0.5 app/models/access_filter.rb
gb_mapfish_appserver-1.0.4 app/models/access_filter.rb
gb_mapfish_appserver-1.0.3 app/models/access_filter.rb
gb_mapfish_appserver-1.0.2 app/models/access_filter.rb
gb_mapfish_appserver-1.0.1 app/models/access_filter.rb
gb_mapfish_appserver-1.0.0 app/models/access_filter.rb
gb_mapfish_appserver-0.9.7 app/models/access_filter.rb
gb_mapfish_appserver-0.9.6 app/models/access_filter.rb
gb_mapfish_appserver-0.9.5 app/models/access_filter.rb
gb_mapfish_appserver-0.9.4 app/models/access_filter.rb
gb_mapfish_appserver-0.9.3 app/models/access_filter.rb
gb_mapfish_appserver-0.9.2 app/models/access_filter.rb
gb_mapfish_appserver-0.9.1 app/models/access_filter.rb
gb_mapfish_appserver-0.9.0 app/models/access_filter.rb