Sha256: ac8e1dfcedfbd890f24e02e441f408e8c312fcb94ee6c2ef8e8f6ed637570639

Contents?: true

Size: 682 Bytes

Versions: 14

Compression:

Stored size: 682 Bytes

Contents

module CanTango
  class PermissionEngine < Engine
    class Evaluator
      attr_reader :ability, :rule

      include CanTango::Rules

      def initialize ability, rule
        @ability = ability
        @rule = rule
        safe_rules!
      end

      def evaluate! user
        @user = user
        instance_eval rule.can if rule.can?
        instance_eval rule.cannot if rule.cannot?
      end

      def rules
        ability.send :rules
      end

      def user
        @user
      end

      def safe_rules!
        rule.can.gsub!(/(User|UserAccount)/,'::\1') if rule.can?
        rule.cannot.gsub!(/(User|UserAccount)/,'::\1') if rule.cannot?
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
cantango-0.9.3.2 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.9.5 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.9.4 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.9.3 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.9.2 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.9.1 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.9 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.8.1 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.8 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.7 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.6.2 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.6.1 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.6 lib/cantango/permission_engine/evaluator.rb
cantango-0.8.5.1 lib/cantango/permission_engine/evaluator.rb