Sha256: ab5dcb778fce4dcf94dc19530cf09a3fb83ceaede1f940285a4bfeae8432e3a3
Contents?: true
Size: 836 Bytes
Versions: 10
Compression:
Stored size: 836 Bytes
Contents
module Aegis class Sieve def initialize(role_name, effect, block = nil) role_name = 'everyone' if role_name.blank? @role_name = role_name.to_s @effect = effect @block = block end def may?(context, *args) matches_role = @role_name == 'everyone' || @role_name == context.role.name if matches_role if @block block_result = context.instance_exec(*args, &@block) block_result ? @effect : !@effect else @effect end else nil end end def inspect "Sieve(#{{:role_name => @role_name, :effect => @effect ? :allow : :deny, :block => @block.present?}.inspect})" end def self.allow_to_all new('everyone', true) end def self.deny_to_all new('everyone', false) end end end
Version data entries
10 entries across 10 versions & 1 rubygems