Module: UcbRailsUser::UserConcerns
- Extended by:
- ActiveSupport::Concern
- Defined in:
- app/models/concerns/ucb_rails_user/user_concerns.rb
Instance Method Summary collapse
- #active? ⇒ Boolean
- #can_impersonate? ⇒ Boolean
- #current_impersonation ⇒ Object
- #full_name ⇒ Object
-
#impersonate!(target) ⇒ Object
target can be a User instance or a user id return true if Impersonation succeeded; false otherwise.
- #impersonating? ⇒ Boolean
- #impersonation_target ⇒ Object
- #inactive!(_inactive = true) ⇒ Object
- #inactive? ⇒ Boolean
- #ldap_entry ⇒ Object
- #recent_impersonations(max = 25) ⇒ Object
- #stop_impersonation! ⇒ Object
- #superuser!(_superuser = true) ⇒ Object
- #superuser? ⇒ Boolean
Instance Method Details
#active? ⇒ Boolean
9 10 11 |
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 9 def active? !inactive? end |
#can_impersonate? ⇒ Boolean
38 39 40 |
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 38 def can_impersonate? superuser? end |
#current_impersonation ⇒ Object
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_name ⇒ Object
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
65 66 67 |
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 65 def impersonating? current_impersonation.present? end |
#impersonation_target ⇒ Object
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
13 14 15 |
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 13 def inactive? inactive_flag end |
#ldap_entry ⇒ Object
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
21 22 23 |
# File 'app/models/concerns/ucb_rails_user/user_concerns.rb', line 21 def superuser? superuser_flag end |