Class: User
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- User
- Defined in:
- app/models/user.rb
Instance Attribute Summary collapse
-
#password ⇒ Object
Returns the value of attribute password.
Class Method Summary collapse
Instance Method Summary collapse
- #firstname_lastname ⇒ Object
- #fix_ipumsi_registration ⇒ Object
- #get_ipumsi_user ⇒ Object
- #has_invalid_agreement? ⇒ Boolean
- #has_microdata_access? ⇒ Boolean
- #has_valid_agreement? ⇒ Boolean
- #ipumsi_authentication_valid? ⇒ Boolean
- #is_admin? ⇒ Boolean
- #microdata_access_expiration_date ⇒ Object
- #microdata_access_is_approved? ⇒ Boolean
- #microdata_access_is_denied? ⇒ Boolean
- #microdata_access_is_expired? ⇒ Boolean
- #microdata_access_is_incomplete? ⇒ Boolean
- #microdata_access_is_pending? ⇒ Boolean
- #normalize_attributes ⇒ Object
- #ongoing_extract_requests ⇒ Object
- #owner_info(without_id = false) ⇒ Object
- #set_api_key ⇒ Object
- #set_ipumsi_authentication ⇒ Object
- #set_user_role(role) ⇒ Object
- #to_s ⇒ Object
- #toggle_admin! ⇒ Object
Instance Attribute Details
#password ⇒ Object
Returns the value of attribute password.
8 9 10 |
# File 'app/models/user.rb', line 8 def password @password end |
Class Method Details
.dump_all ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'app/models/user.rb', line 20 def self.dump_all { 'bare_users' => self.all.map { |user| user.attributes.delete_if { |attrb| attrb == 'id' }.map { |attrb, value| if attrb != 'user_role_id' {attrb => value} else {'user_role_id' => UserRole.find(value).role} end }.reduce({}, :merge) } } end |
Instance Method Details
#firstname_lastname ⇒ Object
40 41 42 |
# File 'app/models/user.rb', line 40 def firstname_lastname [firstname, lastname].reject(&:blank?).join(' ') end |
#fix_ipumsi_registration ⇒ Object
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 |
# File 'app/models/user.rb', line 170 def fix_ipumsi_registration return if microdata_access_requested.nil? if !has_microdata_access? && microdata_access_requested && microdata_access_allowed ipumsi_user = get_ipumsi_user registration_data = { id: ipumsi_user.id, address_line_1: address_line_1, address_line_2: address_line_2, address_line_3: address_line_3, city: city, state: state, zip_code: postal_code, country: registration_country, country_of_origin: country_of_origin, phone: personal_phone, department_id: fix_ipumsi_department_id(), academic_status_id: fix_ipumsi_academic_status_id(), anticipated_result_id: fix_ipumsi_anticipated_result_id(), institutional_affiliation: institutional_affiliation, why_no_institution: explain_no_affiliation, institution_name: institution, user_email_at_institution: inst_email, institution_url: inst_web, institution_email: inst_boss, institution_phone: inst_phone, has_safety_board: has_ethics, safety_board_name: ethical_board, research_description: research_description, health_research: health_research, research_funding_source: funder } ipums_registration = IpumsRegistration.new(registration_data) ipums_registration.set_default_creation_attributes ipums_registration.save(validate: false) end reset_microdata_access_info end |
#get_ipumsi_user ⇒ Object
79 80 81 |
# File 'app/models/user.rb', line 79 def get_ipumsi_user IpumsUser.find_by(email: self.email) end |
#has_invalid_agreement? ⇒ Boolean
123 124 125 |
# File 'app/models/user.rb', line 123 def has_invalid_agreement? !has_valid_agreement? end |
#has_microdata_access? ⇒ Boolean
128 129 130 131 |
# File 'app/models/user.rb', line 128 def has_microdata_access? ipumsi_user = get_ipumsi_user !ipumsi_user.nil? && !ipumsi_user.get_ipumsi_registration.nil? end |
#has_valid_agreement? ⇒ Boolean
118 119 120 |
# File 'app/models/user.rb', line 118 def has_valid_agreement? !!(self.opt_in && self.no_fees && self.cite && self.send_copy && self.data_only && self.good_not_evil) end |
#ipumsi_authentication_valid? ⇒ Boolean
91 92 93 |
# File 'app/models/user.rb', line 91 def ipumsi_authentication_valid? !(self.ipumsi_salt.blank? || self.ipumsi_crypted_password.blank?) end |
#is_admin? ⇒ Boolean
54 55 56 57 58 59 60 61 |
# File 'app/models/user.rb', line 54 def is_admin? admin_role = UserRole.find_by(role: :ADMIN) if admin_role.nil? false else user_role.id == admin_role.id end end |
#microdata_access_expiration_date ⇒ Object
162 163 164 165 166 167 |
# File 'app/models/user.rb', line 162 def microdata_access_expiration_date ipumsi_user = get_ipumsi_user ipumsi_user.nil? and return nil ipums_registration = ipumsi_user.get_ipumsi_registration ipums_registration.nil? ? nil : ipums_registration.expires_at end |
#microdata_access_is_approved? ⇒ Boolean
149 150 151 |
# File 'app/models/user.rb', line 149 def microdata_access_is_approved? !microdata_access_is_expired? && microdata_access_status == IpumsRegistration::STATUS[:approved] end |
#microdata_access_is_denied? ⇒ Boolean
134 135 136 |
# File 'app/models/user.rb', line 134 def microdata_access_is_denied? microdata_access_status == IpumsRegistration::STATUS[:denied] end |
#microdata_access_is_expired? ⇒ Boolean
154 155 156 157 158 159 |
# File 'app/models/user.rb', line 154 def microdata_access_is_expired? ipumsi_user = get_ipumsi_user ipumsi_user.nil? and return true ipums_registration = ipumsi_user.get_ipumsi_registration ipums_registration.nil? ? true : ipums_registration.is_expired? end |
#microdata_access_is_incomplete? ⇒ Boolean
144 145 146 |
# File 'app/models/user.rb', line 144 def microdata_access_is_incomplete? microdata_access_status == IpumsRegistration::STATUS[:incomplete] end |
#microdata_access_is_pending? ⇒ Boolean
139 140 141 |
# File 'app/models/user.rb', line 139 def microdata_access_is_pending? microdata_access_status == IpumsRegistration::STATUS[:pending] end |
#normalize_attributes ⇒ Object
96 97 98 99 100 101 102 103 |
# File 'app/models/user.rb', line 96 def normalize_attributes self.firstname.strip! self.lastname.strip! self.email.strip! self.email.downcase! set_user_role(:USER) if self.user_role.nil? set_api_key if self.api_key.nil? end |
#ongoing_extract_requests ⇒ Object
74 75 76 |
# File 'app/models/user.rb', line 74 def ongoing_extract_requests extract_requests.joins(:extract_statuses).where(extract_statuses: {status: %w[completed enqueued processing email_sent]}).distinct end |
#owner_info(without_id = false) ⇒ Object
45 46 47 48 49 50 51 |
# File 'app/models/user.rb', line 45 def owner_info(without_id = false) if without_id "#{firstname} #{lastname} <#{email}>" else "User[#{id}]: #{firstname} #{lastname} <#{email}>" end end |
#set_api_key ⇒ Object
111 112 113 114 115 |
# File 'app/models/user.rb', line 111 def set_api_key hash = OpenSSL::Digest::SHA256.new salt = SecureRandom.random_bytes(hash.new.block_length) self.api_key = OpenSSL::HMAC.new(salt, hash).to_s end |
#set_ipumsi_authentication ⇒ Object
84 85 86 87 88 |
# File 'app/models/user.rb', line 84 def set_ipumsi_authentication srand self.ipumsi_salt = Digest::SHA1.hexdigest(rand.to_s) self.ipumsi_crypted_password = Digest::SHA1.hexdigest("#{self.password}:mpc-50wiley:#{self.ipumsi_salt}") end |
#set_user_role(role) ⇒ Object
106 107 108 |
# File 'app/models/user.rb', line 106 def set_user_role(role) self.user_role = UserRole.find_by(role: role) end |
#to_s ⇒ Object
35 36 37 |
# File 'app/models/user.rb', line 35 def to_s "id: #{id.nil? ? '<not set>' : id}, email: #{email.nil? ? '<not set>' : email}, microdata_access_allowed: #{microdata_access_is_approved?}" end |
#toggle_admin! ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'app/models/user.rb', line 64 def toggle_admin! if is_admin? set_user_role(:USER) else set_user_role(:ADMIN) end save end |