module Authorization::ObjectRolesTable::UserExtensions::InstanceMethods

Public Instance Methods

has_no_role( role_name, authorizable_obj = nil ) click to toggle source
# File lib/authorization/publishare/object_roles_table.rb, line 46
def has_no_role( role_name, authorizable_obj = nil  )
  role = get_role( role_name, authorizable_obj )
  if role
    self.roles.delete( role )
    role.destroy if role.users.empty?
  end
end
has_role( role_name, authorizable_obj = nil ) click to toggle source
# File lib/authorization/publishare/object_roles_table.rb, line 32
def has_role( role_name, authorizable_obj = nil )
  role = get_role( role_name, authorizable_obj )
  if role.nil?
    if authorizable_obj.is_a? Class
      role = Role.create( :name => role_name, :authorizable_type => authorizable_obj.to_s )
    elsif authorizable_obj
      role = Role.create( :name => role_name, :authorizable => authorizable_obj )
    else
      role = Role.create( :name => role_name )
    end
  end
  self.roles << role if role and not self.roles.exists?( role.id )
end
has_role?( role_name, authorizable_obj = nil ) click to toggle source

If roles aren't explicitly defined in user class then check roles table

# File lib/authorization/publishare/object_roles_table.rb, line 23
def has_role?( role_name, authorizable_obj = nil )
  if authorizable_obj.nil?
    self.roles.find_by_name( role_name ) ? true : false    # If we ask a general role question, return true if any role is defined.
  else
    role = get_role( role_name, authorizable_obj )
    role ? self.roles.exists?( role.id ) : false
  end
end

Private Instance Methods

get_role( role_name, authorizable_obj ) click to toggle source
# File lib/authorization/publishare/object_roles_table.rb, line 56
def get_role( role_name, authorizable_obj )
  if authorizable_obj.is_a? Class
    Role.find( :first, 
               :conditions => [ 'name = ? and authorizable_type = ? and authorizable_id IS NULL', role_name, authorizable_obj.to_s ] )
  elsif authorizable_obj
    Role.find( :first, 
               :conditions => [ 'name = ? and authorizable_type = ? and authorizable_id = ?', 
                                role_name, authorizable_obj.class.base_class.to_s, authorizable_obj.id ] )
  else
    Role.find( :first, 
               :conditions => [ 'name = ? and authorizable_type IS NULL and authorizable_id IS NULL', role_name ] )
  end
end