Module: RoleAuthorization::Roles::Role::InstanceMethods

Defined in:
lib/role_authorization/roles/role.rb

Instance Method Summary collapse

Instance Method Details

#add_user(user_id, scope = nil) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/role_authorization/roles/role.rb', line 34

def add_user(user_id, scope = nil)
  unserialized_user_ids = self.user_ids
  unserialized_user_ids ||= Hash.new

  if scope.nil? || scope.is_a?(Symbol) || scope.is_a?(String) || scope.is_a?(Class)
    unserialized_user_ids[scope_with(scope)] ||= Array.new
    unserialized_user_ids[scope_with(scope)] << user_id
    unserialized_user_ids[scope_with(scope)].uniq!
  else
    unserialized_user_ids[scope_with(scope)] ||= Array.new
    unserialized_user_ids[scope_with(scope)] << user_id
    unserialized_user_ids[scope_with(scope)].uniq!
  end

  self.user_ids = unserialized_user_ids

  save
end

#remove_user(user_id, scope = nil) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# File 'lib/role_authorization/roles/role.rb', line 53

def remove_user(user_id, scope = nil)
  unserialized_user_ids = self.user_ids
  unserialized_user_ids ||= Hash.new

  if scope.nil? || scope.is_a?(Symbol) || scope.is_a?(String) || scope.is_a?(Class)
    unserialized_user_ids[scope_with(scope)] ||= Array.new
    unserialized_user_ids[scope_with(scope)].delete(user_id)
  else
    unserialized_user_ids[scope_with(scope)] ||= Array.new
    unserialized_user_ids[scope_with(scope)].delete(user_id)
  end

  self.user_ids = unserialized_user_ids

  save
end

#scope_with(scope) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/role_authorization/roles/role.rb', line 14

def scope_with(scope)
  if scope.blank? || scope.is_a?(Symbol) || scope.is_a?(String) || scope.is_a?(Integer)
    scope || :all
  else
    scope.id
  end
end

#users(scope = nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/role_authorization/roles/role.rb', line 22

def users(scope = nil)
  if user_ids.blank?
    []
  else
    if scope.nil?
      RoleAuthorization::Roles::Manager.user_klass.where(:id => user_ids.values.flatten.uniq).all
    else
      RoleAuthorization::Roles::Manager.user_klass.where(:id => user_ids[scope_with(scope)]).all
    end
  end
end