Sha256: 841b051f6675d08998f09004662907e9a91ff626b840b7b3ffaa6bec48c01df2

Contents?: true

Size: 876 Bytes

Versions: 1

Compression:

Stored size: 876 Bytes

Contents

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
    if block_args.empty?
      block_args << self
    end
    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.1 lib/reuser.rb