Module: Acl9::ModelExtensions::Subject

Defined in:
lib/acl9/model_extensions/subject.rb

Instance Method Summary collapse

Instance Method Details

#has_no_role!(role_name, object = nil) ⇒ Object



30
31
32
# File 'lib/acl9/model_extensions/subject.rb', line 30

def has_no_role!(role_name, object = nil)
  delete_role(get_role(role_name, object))
end

#has_no_roles!Object



48
49
50
51
52
53
54
55
56
57
# File 'lib/acl9/model_extensions/subject.rb', line 48

def has_no_roles!
  # for some reason simple 
  #
  #   self.roles.each { |role| delete_role(role) }
  #
  # doesn't work. seems like a bug in ActiveRecord
  self.roles.map(&:id).each do |role_id|
    delete_role self._auth_role_class.find(role_id)
  end
end

#has_no_roles_for!(object = nil) ⇒ Object



44
45
46
# File 'lib/acl9/model_extensions/subject.rb', line 44

def has_no_roles_for!(object = nil)
  roles_for(object).each { |role| delete_role(role) }
end

#has_role!(role_name, object = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/acl9/model_extensions/subject.rb', line 14

def has_role!(role_name, object = nil)
  role = get_role(role_name, object)

  if role.nil?
    role_attrs = case object
                 when Class then { :authorizable_type => object.to_s }
                 when nil   then {}
                 else            { :authorizable => object }
                 end.merge(      { :name => role_name.to_s })

    role = self._auth_role_class.create(role_attrs)          
  end

  self.roles << role if role && !self.roles.exists?( role.id )
end

#has_role?(role_name, object = nil) ⇒ Boolean

Returns:

  • (Boolean)


4
5
6
7
8
9
10
11
12
# File 'lib/acl9/model_extensions/subject.rb', line 4

def has_role?(role_name, object = nil)
  !! if object.nil?
    self.roles.find_by_name(role_name.to_s) ||
    self.roles.member?(get_role(role_name, nil))
  else
    role = get_role(role_name, object)
    role && self.roles.exists?(role.id)
  end
end

#has_roles_for?(object) ⇒ Boolean Also known as: has_role_for?

Returns:

  • (Boolean)


34
35
36
# File 'lib/acl9/model_extensions/subject.rb', line 34

def has_roles_for?(object)
  !!self.roles.detect(&role_selecting_lambda(object))
end

#roles_for(object) ⇒ Object



40
41
42
# File 'lib/acl9/model_extensions/subject.rb', line 40

def roles_for(object)
  self.roles.select(&role_selecting_lambda(object))
end