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



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/role_authorization/roles/role.rb', line 40

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



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/role_authorization/roles/role.rb', line 59

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



19
20
21
22
23
24
25
# File 'lib/role_authorization/roles/role.rb', line 19

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



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/role_authorization/roles/role.rb', line 27

def users(scope = nil)
  @users ||= {}
  @users[scope] ||= 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