Sha256: a40add7e4dcd9c958ac10cb380bde081dcf28fd1f057abaf0a2680caebb8a2d8

Contents?: true

Size: 682 Bytes

Versions: 3

Compression:

Stored size: 682 Bytes

Contents

module ReUser
  class Role
    attr_reader :name

    def permissions
      @permissions.keys
    end

    def initialize name, permissions=[]
      @name = name
      @permissions = {}
      self.can *permissions
    end

    def can *permissions
      permissions.each do |permission|
        @permissions[permission] = lambda {|*args| true }
      end
    end

    def can? permission
      @permissions[permission].is_a? Proc
    end

    def could permission, &block
      raise "#could requires a block" unless block_given?
      @permissions[permission] = block
    end

    def could? permission, block_args
      @permissions[permission].call(block_args)
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
reuser-3.1.0 lib/reuser/role.rb
reuser-3.0.0 lib/reuser/role.rb
reuser-2.0.0 lib/reuser/role.rb