Class: Lato::User
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Lato::User
- Includes:
- LatoUserApplication
- Defined in:
- app/models/lato/user.rb
Instance Method Summary collapse
- #accept_invitation(params) ⇒ Object
- #c_email_verification_code(value = nil) ⇒ Object
-
#c_email_verification_semaphore(value = nil) ⇒ Object
Cache.
- #c_password_update_code(value = nil) ⇒ Object
- #destroy_with_confirmation(params) ⇒ Object
-
#full_name ⇒ Object
Helpers.
- #request_recover_password(params) ⇒ Object
- #request_verify_email ⇒ Object
- #signin(params) ⇒ Object
-
#signup(params = {}) ⇒ Object
Operations.
- #update_accepted_privacy_policy_version(params) ⇒ Object
- #update_accepted_terms_and_conditions_version(params) ⇒ Object
- #update_password(params) ⇒ Object
-
#valid_accepted_privacy_policy_version? ⇒ Boolean
Questions.
- #valid_accepted_terms_and_conditions_version? ⇒ Boolean
- #verify_email(params) ⇒ Object
Instance Method Details
#accept_invitation(params) ⇒ Object
214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
# File 'app/models/lato/user.rb', line 214 def accept_invitation(params) invitation = Lato::Invitation.find_by(id: params[:id], accepted_code: params[:accepted_code]) if !invitation || invitation.accepted? || invitation.email != email errors.add(:base, :invitation_invalid) return end ActiveRecord::Base.transaction do raise ActiveRecord::Rollback unless save && invitation.update( accepted_at: Time.now, lato_user_id: id ) true end end |
#c_email_verification_code(value = nil) ⇒ Object
242 243 244 245 246 247 248 |
# File 'app/models/lato/user.rb', line 242 def c_email_verification_code(value = nil) cache_key = "Lato::User/c_email_verification_code/#{id}" return Rails.cache.read(cache_key) if value.nil? Rails.cache.write(cache_key, value, expires_in: 30.minutes) value end |
#c_email_verification_semaphore(value = nil) ⇒ Object
Cache
234 235 236 237 238 239 240 |
# File 'app/models/lato/user.rb', line 234 def c_email_verification_semaphore(value = nil) cache_key = "Lato::User/c_email_verification_semaphore/#{id}" return Rails.cache.read(cache_key) if value.nil? Rails.cache.write(cache_key, value, expires_in: 2.minutes) value end |
#c_password_update_code(value = nil) ⇒ Object
250 251 252 253 254 255 256 |
# File 'app/models/lato/user.rb', line 250 def c_password_update_code(value = nil) cache_key = "Lato::User/c_password_update_code/#{id}" return Rails.cache.read(cache_key) if value.nil? Rails.cache.write(cache_key, value, expires_in: 30.minutes) value end |
#destroy_with_confirmation(params) ⇒ Object
205 206 207 208 209 210 211 212 |
# File 'app/models/lato/user.rb', line 205 def destroy_with_confirmation(params) unless params[:email_confirmation] == email errors.add(:email, :not_correct) return end destroy end |
#full_name ⇒ Object
Helpers
57 58 59 |
# File 'app/models/lato/user.rb', line 57 def full_name "#{last_name} #{first_name}" end |
#request_recover_password(params) ⇒ Object
147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'app/models/lato/user.rb', line 147 def request_recover_password(params) user = Lato::User.find_by(email: params[:email]) unless user errors.add(:email, :not_registered) return end code = SecureRandom.hex.upcase delivery = Lato::UserMailer.password_update_mail(user.id, code).deliver_now unless delivery errors.add(:base, :email_sending_error) return end self.id = user.id reload c_password_update_code(code) true end |
#request_verify_email ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'app/models/lato/user.rb', line 108 def request_verify_email if c_email_verification_semaphore errors.add(:base, :email_verification_limit) return end code = SecureRandom.hex.upcase delivery = Lato::UserMailer.email_verification_mail(id, code).deliver_now unless delivery errors.add(:base, :email_sending_error) return end c_email_verification_code(code) c_email_verification_semaphore(true) true end |
#signin(params) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'app/models/lato/user.rb', line 79 def signin(params) self.email = params[:email] user = Lato::User.find_by(email: params[:email]) unless user errors.add(:email, :not_correct) return end unless user.authenticate(params[:password]) errors.add(:password, :not_correct) return end self.id = user.id reload begin lato_log_user_signins.create( ip_address: params[:ip_address], user_agent: params[:user_agent] ) rescue StandardError => e Rails.logger.error(e) end true end |
#signup(params = {}) ⇒ Object
Operations
64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'app/models/lato/user.rb', line 64 def signup(params = {}) return unless save begin lato_log_user_signups.create( ip_address: params[:ip_address], user_agent: params[:user_agent] ) rescue StandardError => e Rails.logger.error(e) end true end |
#update_accepted_privacy_policy_version(params) ⇒ Object
187 188 189 190 191 192 193 194 |
# File 'app/models/lato/user.rb', line 187 def update_accepted_privacy_policy_version(params) unless params[:confirm] errors.add(:base, :privacy_policy_invalid) return end update(accepted_privacy_policy_version: Lato.config.legal_privacy_policy_version) end |
#update_accepted_terms_and_conditions_version(params) ⇒ Object
196 197 198 199 200 201 202 203 |
# File 'app/models/lato/user.rb', line 196 def update_accepted_terms_and_conditions_version(params) unless params[:confirm] errors.add(:base, :terms_and_conditions_invalid) return end update(accepted_terms_and_conditions_version: Lato.config.legal_terms_and_conditions_version) end |
#update_password(params) ⇒ Object
169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 |
# File 'app/models/lato/user.rb', line 169 def update_password(params) password_update_code = c_password_update_code if password_update_code.blank? errors.add(:base, :password_update_code_expired) return end unless password_update_code == params[:code] errors.add(:base, :password_update_code_invalid) return end c_password_update_code('') update(params.permit(:password, :password_confirmation)) end |
#valid_accepted_privacy_policy_version? ⇒ Boolean
Questions
46 47 48 |
# File 'app/models/lato/user.rb', line 46 def valid_accepted_privacy_policy_version? @valid_accepted_privacy_policy_version ||= accepted_privacy_policy_version >= Lato.config.legal_privacy_policy_version end |
#valid_accepted_terms_and_conditions_version? ⇒ Boolean
50 51 52 |
# File 'app/models/lato/user.rb', line 50 def valid_accepted_terms_and_conditions_version? @valid_accepted_terms_and_conditions_version ||= accepted_terms_and_conditions_version >= Lato.config.legal_terms_and_conditions_version end |
#verify_email(params) ⇒ Object
127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'app/models/lato/user.rb', line 127 def verify_email(params) email_verification_code = c_email_verification_code if email_verification_code.blank? errors.add(:base, :email_verification_code_expired) return end unless email_verification_code == params[:code] errors.add(:base, :email_verification_code_invalid) return end c_email_verification_code('') c_email_verification_semaphore(false) update_column(:email_verified_at, Time.now) true end |