4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
# File 'app/services/egov_utils/refresh_groups.rb', line 4
def call
hsh = remote_groups.each_with_object({}) do |group, memo|
infos = group.ldap_members
infos.each do |info|
memo[info] ||= []
memo[info] << group
end
end
hsh.each do |info, groups|
user = EgovUtils::User.where("login ILIKE ?", info[:login]).first
next unless user
all_groups = user.groups.where(ldap_uid: nil) + groups
info[:login] = info[:login].downcase
info[:mail] = info[:mail].downcase
user.update(info.except(:dn).merge(groups: all_groups))
end
end
|