Sha256: c52b34daf1577fe3259f450a0e25f0478f592c7a54dec75a6ca3d6714039c694

Contents?: true

Size: 1.13 KB

Versions: 7

Compression:

Stored size: 1.13 KB

Contents

require 'yaml'

module License
  class Base
    attr_reader :permit, :licenses
    
    def initialize permit, licenses_file = nil
      @permit = permit
      @licenses = ::PermissionsLoader.load_licenses licenses_file
    end

    def enforce!
      raise "enforce! must be implemented by subclass of License::Base"
    end

    def load_rules name = nil
      return if !licenses || licenses.empty?      

      name ||= self.class.to_s.gsub(/License$/, "").underscore.to_sym
            
      licenses[name].can_statement do |permission_statement|
        instance_eval permission_statement
      end

      licenses[name].cannot_statement do |permission_statement|
        instance_eval permission_statement
      end
    end
    
    def can(action, subject, conditions = nil, &block)
      permit.can action, subject, conditions, &block
    end
        
    def cannot(action, subject, conditions = nil, &block)
      permit.cannot action, subject, conditions, &block
    end
    
    def owns(user, clazz, ownership_relation = :user_id, user_id_attribute = :id)
      permit.owns user, clazz, ownership_relation, user_id_attribute
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
cancan-permits-0.3.12 lib/cancan-permits/license/base_license.rb
cancan-permits-0.3.11 lib/cancan-permits/license/base_license.rb
cancan-permits-0.3.10 lib/cancan-permits/license/base_license.rb
cancan-permits-0.3.9 lib/cancan-permits/license/base_license.rb
cancan-permits-0.3.8 lib/cancan-permits/license/base_license.rb
cancan-permits-0.3.7 lib/cancan-permits/license/base_license.rb
cancan-permits-0.3.6 lib/cancan-permits/license/base_license.rb