Sha256: d75f24ebbbcc3a124df63247e94ca44884feb1c08165d8ff7774e6f8e19c3800

Contents?: true

Size: 836 Bytes

Versions: 1

Compression:

Stored size: 836 Bytes

Contents

require 'reuser/role'
require 'reuser/role_definition'
require 'reuser/errors'

module ReUser
  module ClassMethods
    def roles &definition_block
      if block_given?
        definition = ReUser::RoleDefinition.new(definition_block)
        @@roles = definition.roles
      else
        @@roles.keys
      end
    end

    def role(name)
      @@roles.fetch(name.to_sym)
    rescue ::IndexError
      raise RoleNotDefined.new(name)
    end
  end

  def self.included(base)
    base.extend ReUser::ClassMethods
  end

  def can? permission
    self.class.role(self.role).can? permission
  end

  def cant? permission
    !can?(permission)
  end

  def could? permission, block_args
    self.class.role(self.role).could? permission, block_args
  end

  def couldnt? permission, block_args
    !could?(permission, block_args)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
reuser-3.1.0 lib/reuser.rb