Module: UcbRailsUser::UserConcerns

Extended by:
ActiveSupport::Concern
Defined in:
app/models/concerns/ucb_rails_user/user_concerns.rb

Instance Method Summary collapse

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


9
10
11
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 9

def active?
  !inactive?
end

#can_impersonate?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 38

def can_impersonate?
  superuser?
end

#current_impersonationObject



56
57
58
59
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 56

def current_impersonation
  return @current_impersonation if defined?(@current_impersonation)
  @current_impersonation = UcbRailsUser::Impersonation.where(user_id: self.id, active: true).includes([:target]).take
end

#full_nameObject



33
34
35
36
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 33

def full_name
  return nil unless first_name || last_name
  "#{first_name} #{last_name}".strip
end

#impersonate!(target) ⇒ Object

target can be a User instance or a user id return true if Impersonation succeeded; false otherwise



44
45
46
47
48
49
50
51
52
53
54
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 44

def impersonate!(target)
  target_id =
    if target.respond_to?(:id)
      target.id
    else
      UcbRailsUser.user_class.find_by(id: target)&.id
    end
  return false unless impersonation_is_valid?(target_id)
  @current_impersonation = create_impersonation(target_id)
  @current_impersonation.present?
end

#impersonating?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 65

def impersonating?
  current_impersonation.present?
end

#impersonation_targetObject



61
62
63
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 61

def impersonation_target
  current_impersonation&.target
end

#inactive!(_inactive = true) ⇒ Object



25
26
27
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 25

def inactive!(_inactive=true)
  update_attribute(:inactive_flag, _inactive)
end

#inactive?Boolean

Returns:

  • (Boolean)


13
14
15
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 13

def inactive?
  inactive_flag
end

#ldap_entryObject



29
30
31
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 29

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

#recent_impersonations(max = 25) ⇒ Object



74
75
76
77
78
79
80
81
82
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 74

def recent_impersonations(max=25)
  @recent_impersonations ||=
    impersonations
      .uniq(&:target_id)
      .reject(&:active)
      .sort_by(&:created_at)
      .reverse
      .take(max)
end

#stop_impersonation!Object



69
70
71
72
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 69

def stop_impersonation!
  impersonations.update_all(active: false)
  @current_impersonation = nil
end

#superuser!(_superuser = true) ⇒ Object



17
18
19
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 17

def superuser!(_superuser=true)
  update_attribute(:superuser_flag, _superuser)
end

#superuser?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 21

def superuser?
  superuser_flag
end