module ClerkRails::Clerked

Public Instance Methods

clerk_permissions_map() click to toggle source
# File lib/clerk_rails/clerked.rb, line 38
def clerk_permissions_map
  @@clerk_permissions_map
end
clerk_roles_map() click to toggle source
# File lib/clerk_rails/clerked.rb, line 42
def clerk_roles_map
  @@clerk_roles_map
end
clerk_roles_scope() click to toggle source
# File lib/clerk_rails/clerked.rb, line 60
def clerk_roles_scope
  class_name = self.name
  ->{ where(scope_class: class_name) }
end
has_role?(role, account) click to toggle source
# File lib/clerk_rails/clerked.rb, line 29
def has_role?(role, account)
  account.has_role?(role, self)
end
roles_for(account) click to toggle source
# File lib/clerk_rails/clerked.rb, line 33
def roles_for(account)
  account.roles_for(self)
end
roles_with_permission(permission) click to toggle source
# File lib/clerk_rails/clerked.rb, line 46
def roles_with_permission(permission)
  @@clerk_roles_map[permission] ||= begin 
    roles_with_permission = []

    clerk_permissions_map.keys.each do |key|
      if clerk_permissions_map[key].include?(permission)
        roles_with_permission << key
      end
    end

    roles_with_permission
  end 
end
with(role: nil, permission: nil) click to toggle source
# File lib/clerk_rails/clerked.rb, line 13
def with(role: nil, permission: nil)
  if (role.nil? and permission.nil?) or (not role.nil? and not permission.nil?)
    raise ArgumentError.new("Invalid argument, must supply either a role or permission")
  end

  if not role.nil?
    return where(Clerk::Role.table_name=>{name: role})
  elsif not permission.nil?
    all_roles = self.proxy_association.owner.class.roles_with_permission(permission)
    return where(Clerk::Role.table_name=>{name: all_roles})
  end
end