module SmartSMS::HasSmsVerification::ClassMethods::InstanceMethods
Instance methods
Public Instance Methods
deliver(text = SmartSMS::VerificationCode.random)
click to toggle source
发送短信至手机
# File lib/smart_sms/has_sms_verification.rb, line 117 def deliver(text = SmartSMS::VerificationCode.random) result = SmartSMS.deliver send(self.class.sms_mobile_column), text if result['code'] == 0 sms = SmartSMS.find_by_sid(result['result']['sid'])['sms'] save_or_return_message sms, text else errors.add :deliver, result false end end
deliver_fake_sms(text = SmartSMS::VerificationCode.random)
click to toggle source
# File lib/smart_sms/has_sms_verification.rb, line 128 def deliver_fake_sms(text = SmartSMS::VerificationCode.random) mobile = send(self.class.sms_mobile_column) company = SmartSMS.config.company sms = SmartSMS::FakeSMS.build_fake_sms mobile, text, company save_or_return_message sms, text end
latest_message()
click to toggle source
获取最新的一条有效短信记录
# File lib/smart_sms/has_sms_verification.rb, line 97 def latest_message end_time = Time.now start_time = end_time - SmartSMS.config.expires_in if SmartSMS.config.store_sms_in_local send(self.class.messages_association_name) .where('send_time >= ? and send_time <= ?', start_time, end_time) .last else result = SmartSMS.find( start_time: start_time, end_time: end_time, mobile: send(self.class.sms_mobile_column), page_size: 1 ) result['sms'].first end end
verified?()
click to toggle source
判断是否已经验证成功
# File lib/smart_sms/has_sms_verification.rb, line 87 def verified? verified_at.present? end
verified_at()
click to toggle source
# File lib/smart_sms/has_sms_verification.rb, line 91 def verified_at self[self.class.sms_verification_column] end
verify(code)
click to toggle source
安全verify方法, 用于校验短信验证码是否正确, 返回: true 或 false
# File lib/smart_sms/has_sms_verification.rb, line 75 def verify(code) sms = latest_message return false if sms.blank? if SmartSMS.config.store_sms_in_local sms.code == code.to_s else sms['text'].gsub(self.class.verify_regexp, '') == code.to_s end end
verify!(code)
click to toggle source
非安全verify!方法, 验证成功后会存储成功的结果到数据表中
# File lib/smart_sms/has_sms_verification.rb, line 65 def verify!(code) result = verify code if result send("#{self.class.sms_verification_column}=", Time.now) save(validate: false) end end
Private Instance Methods
save_or_return_message(sms, text)
click to toggle source
# File lib/smart_sms/has_sms_verification.rb, line 137 def save_or_return_message(sms, text) if SmartSMS.config.store_sms_in_local message = send(self.class.messages_association_name).build sms message.code = text message.save else sms end end