Sha256: 97de56511e39ae69c256fe574db07a746e2fa44783cf216a6657c11b011cb024
Contents?: true
Size: 769 Bytes
Versions: 1
Compression:
Stored size: 769 Bytes
Contents
module AuthAssistant module RoleStrategy module RolesMask def roles=(*roles) self.roles_mask = (roles & available_roles).map { |r| calc_index(r) }.sum end def roles ROLES.reject { |r| ((roles_mask || 0) & calc_index(r)).zero? } end def role?(role) roles.include? role.to_s end module ClassMethods def set_scope scope :with_role, lambda { |role| where("roles_mask & #{calc_index(role.to_s)} > 0") } end end def self.included(base) base.extend(ClassMethods) end protected def calc_index(r) 2**available_roles.index(r) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
auth-assistant-0.4.0 | lib/auth_assistant/role_strategies/roles_mask.rb |