Class: UcbRailsUser::UserLdapService

Inherits:
Object
  • Object
show all
Defined in:
app/models/ucb_rails_user/user_ldap_service.rb

Class Method Summary collapse

Class Method Details

.create_or_update_user(uid) ⇒ Object



49
50
51
52
53
54
55
# File 'app/models/ucb_rails_user/user_ldap_service.rb', line 49

def create_or_update_user(uid)
  if user = User.find_by_ldap_uid(uid)
    update_user_from_uid(uid)
  else
    create_user_from_uid(uid)
  end
end

.create_or_update_user_from_entry(entry) ⇒ Object



57
58
59
60
61
62
63
64
65
66
# File 'app/models/ucb_rails_user/user_ldap_service.rb', line 57

def create_or_update_user_from_entry(entry)
  # LDAP returns some values as Net::BER::BerIdentifiedString instances, and not
  # all DBs seem to handle that well (e.g. Oracle) - we might want to fix LDAP library
  # to smooth this over?
  if user = User.find_by_ldap_uid(entry.uid.to_s)
    update_user_from_ldap_entry(entry)
  else
    create_user_from_ldap_entry(entry)
  end
end

.create_user_from_ldap_entry(ldap_entry) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/models/ucb_rails_user/user_ldap_service.rb', line 12

def create_user_from_ldap_entry(ldap_entry)
  UcbRailsUser.logger.debug "create_user_from_ldap_entry #{ldap_entry.uid}"

  User.create! do |u|
    u.ldap_uid = ldap_entry.uid
    u.employee_id = ldap_entry.employee_id
    u.affiliate_id = ldap_entry.affiliate_id
    u.student_id = ldap_entry.student_id
    u.first_name = ldap_entry.first_name
    u.last_name = ldap_entry.last_name
    u.email = ldap_entry.email
    u.inactive_flag = ldap_entry.inactive
  end
end

.create_user_from_uid(uid) ⇒ Object



5
6
7
8
9
10
# File 'app/models/ucb_rails_user/user_ldap_service.rb', line 5

def create_user_from_uid(uid)
  UcbRailsUser.logger.debug "create_user_from_uid #{uid}"

  ldap_entry = UcbRailsUser::LdapPerson::Finder.find_by_uid!(uid)
  create_user_from_ldap_entry(ldap_entry)
end

.update_user_from_ldap_entry(ldap_entry) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'app/models/ucb_rails_user/user_ldap_service.rb', line 34

def update_user_from_ldap_entry(ldap_entry)
  UcbRailsUser.logger.debug "update_user_from_ldap_entry #{ldap_entry.uid}"

  User.find_by_ldap_uid!(ldap_entry.uid).tap do |user|
    user.employee_id = ldap_entry.employee_id if user.respond_to?(:employee_id=)
    user.affiliate_id = ldap_entry.affiliate_id
    user.student_id = ldap_entry.student_id
    user.first_name = ldap_entry.first_name
    user.last_name = ldap_entry.last_name
    user.email = ldap_entry.email
    user.inactive_flag = ldap_entry.inactive
    user.save(validate: false)
  end
end

.update_user_from_uid(uid) ⇒ Object



27
28
29
30
31
32
# File 'app/models/ucb_rails_user/user_ldap_service.rb', line 27

def update_user_from_uid(uid)
  UcbRailsUser.logger.debug "update_user_from_uid #{uid}"

  ldap_entry = UcbRailsUser::LdapPerson::Finder.find_by_uid!(uid)
  update_user_from_ldap_entry(ldap_entry)
end