module Devise::Models::Phone
Public Instance Methods
generate_verification_code_and_send_sms(phone_number)
click to toggle source
# File lib/models/phone.rb, line 15 def generate_verification_code_and_send_sms(phone_number) if(phone_verification_needed?) private_generate_verification_code_and_send_sms(phone_number) else "Phone number #{phone_number} is already verified" end end
match_a_verification_code_with_code_entered(code_entered)
click to toggle source
# File lib/models/phone.rb, line 44 def match_a_verification_code_with_code_entered(code_entered) if phone_verification_needed? if code_entered == self.phone_verification_code mark_phone_as_verified nil else "Code entered does not match phone verification code in the database" end else "Phone number #{self.phone_number} is already verified" end end
use_own_verification_code_and_send_sms(phone_number)
click to toggle source
# File lib/models/phone.rb, line 23 def use_own_verification_code_and_send_sms(phone_number) if(phone_verification_needed?) private_use_own_verification_code_and_send_sms(phone_number) else "Phone number #{phone_number} is already verified" end end
verify_phone_number_with_code_entered(code_entered)
click to toggle source
# File lib/models/phone.rb, line 31 def verify_phone_number_with_code_entered(code_entered) if phone_verification_needed? if code_entered == self.phone_verification_code mark_phone_as_verified nil else "Code entered does not match phone verification code in the database" end else "Phone number #{self.phone_number} is already verified" end end
Private Instance Methods
generate_phone_verification_code()
click to toggle source
return 4 digits random code 0-9
# File lib/models/phone.rb, line 116 def generate_phone_verification_code verification_code = SecureRandom.random_number(10 ** 4).to_s.rjust(4,'0') verification_code end
mark_phone_as_verified()
click to toggle source
# File lib/models/phone.rb, line 75 def mark_phone_as_verified self.phone_number_verified = true self.phone_verification_code = nil self.phone_verification_code_sent_at = nil self.phone_verified_at = DateTime.now end
phone_verification_needed?()
click to toggle source
check if phone verification is needed and set errors here
# File lib/models/phone.rb, line 83 def phone_verification_needed? if phone_number_verified false else true end end
private_generate_verification_code_and_send_sms(phone_number)
click to toggle source
# File lib/models/phone.rb, line 59 def private_generate_verification_code_and_send_sms(phone_number) self.phone_verification_code = generate_phone_verification_code set_unverified_phone_attributes # if phone_number.present? send_sms_verification_code(phone_number) # end end
private_use_own_verification_code_and_send_sms(phone_number)
click to toggle source
# File lib/models/phone.rb, line 67 def private_use_own_verification_code_and_send_sms(phone_number) set_unverified_phone_attributes # if phone_number.present? send_sms_verification_code(phone_number) # end end
regenerate_phone_verification_needed?()
click to toggle source
# File lib/models/phone.rb, line 91 def regenerate_phone_verification_needed? # if phone_number.present? if phone_number_changed? true else false end # self.errors.add(:phone_verification_code, :empty_phone_number_field) # false # else # false # end end
send_sms_verification_code(phone_number)
click to toggle source
sends a message to number indicated in the secrets.yml
# File lib/models/phone.rb, line 122 def send_sms_verification_code(phone_number) number_to_send_to = phone_number.gsub!(/[\s\-\(\)]*/, '') verification_code = self.phone_verification_code twilio_sid = Rails.application.config.twilio[:sid] twilio_token = Rails.application.config.twilio[:token] twilio_phone_number = Rails.application.config.twilio[:phone_number] twilio_message_body = I18n.t("devise.phone.message_body", :verification_code => verification_code) begin @twilio_client = Twilio::REST::Client.new twilio_sid, twilio_token @twilio_client.account.messages.create( :from => "+1#{twilio_phone_number}", :to => number_to_send_to, :body => twilio_message_body ) self.phone_verification_code_sent_at = DateTime.now nil #return nil indicating sms sent successfully rescue Twilio::REST::RequestError => e e.message end end
set_unverified_phone_attributes()
click to toggle source
set attributes to user indicating the phone number is unverified
# File lib/models/phone.rb, line 106 def set_unverified_phone_attributes self.phone_number_verified = false self.phone_verified_at = nil # removes all white spaces, hyphens, and parenthesis # if self.phone_number # self.phone_number.gsub!(/[\s\-\(\)]+/, '') # end end