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