Module: Devise::Models::SmsConfirmable::ClassMethods
- Defined in:
- lib/devise_sms_confirmable/models/sms_confirmable.rb
Instance Method Summary collapse
- #find_by_unconfirmed_phone_with_errors(attributes = {}) ⇒ Object
- #send_sms_confirmation_instructions(attributes = {}) ⇒ Object
- #sms_confirm_by_token(phone, sms_confirmation_token, context: nil) ⇒ Object
Instance Method Details
#find_by_unconfirmed_phone_with_errors(attributes = {}) ⇒ Object
239 240 241 242 243 244 245 |
# File 'lib/devise_sms_confirmable/models/sms_confirmable.rb', line 239 def find_by_unconfirmed_phone_with_errors(attributes = {}) attributes = attributes.slice(*sms_confirmation_keys).permit!.to_h if attributes.respond_to? :permit unconfirmed_required_attributes = sms_confirmation_keys.map { |k| k == :phone ? :unconfirmed_phone : k } unconfirmed_attributes = attributes.symbolize_keys unconfirmed_attributes[:unconfirmed_phone] = unconfirmed_attributes.delete(:phone) find_or_initialize_with_errors(unconfirmed_required_attributes, unconfirmed_attributes, :not_found) end |
#send_sms_confirmation_instructions(attributes = {}) ⇒ Object
215 216 217 218 219 220 221 222 |
# File 'lib/devise_sms_confirmable/models/sms_confirmable.rb', line 215 def send_sms_confirmation_instructions(attributes={}) confirmable = find_by_unconfirmed_phone_with_errors(attributes) if sms_reconfirmable unless confirmable.try(:persisted?) confirmable = find_or_initialize_with_errors(sms_confirmation_keys, attributes, :not_found) end confirmable.resend_sms_confirmation_instructions if confirmable.persisted? confirmable end |
#sms_confirm_by_token(phone, sms_confirmation_token, context: nil) ⇒ Object
224 225 226 227 228 229 230 231 232 233 234 235 236 237 |
# File 'lib/devise_sms_confirmable/models/sms_confirmable.rb', line 224 def sms_confirm_by_token(phone, sms_confirmation_token, context: nil) confirmable = find_first_by_auth_conditions(phone: phone, sms_confirmation_token: sms_confirmation_token) unless confirmable confirmation_digest = Devise.token_generator.digest(self, :sms_confirmation_token, sms_confirmation_token) confirmable = find_or_initialize_with_errors([:phone, :sms_confirmation_token], { phone: phone, sms_confirmation_token: confirmation_digest }, :invalid) end # TODO: replace above lines with # confirmable = find_or_initialize_with_error_by(:sms_confirmation_token, sms_confirmation_token) # after enough time has passed that Devise clients do not use digested tokens confirmable.sms_confirm(context: context) if confirmable.persisted? confirmable end |