module AuthorizationNext::ObjectRolesTable::UserExtensions::InstanceMethods
Public Instance Methods
has_no_role( role_name, authorizable_obj = nil )
click to toggle source
# File lib/authorization_next/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_next/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_next/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_next/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