Ruby on railsとTwilioを使用した電話番号の検証

かつて、電話番号を確認する作業に直面しました。 そして、GitHubに星がない( そしてハブに招待する )ので、宝石を作ることにしました。

画像

Twilioサービスは、便利で安価なため、SMSゲートウェイとして選択されました。 このビジネスに数時間費やした後、私にとって非常に便利な宝石であることが判明しました。

それをインストールするには、gemfileに追加する必要があります。

gem "twilio_phone_verification" 

次に、コマンドを実行します。

 bundle install 

そして

 rails g twilio_phone_verification:install [USER_CLASS] 

USER_CLASSは、電話チェックを追加するクラスです。 注:テキストメッセージ "Hello、{{name}} ..."を送信できるように、このクラスには名前フィールドが必要です 。 これにより、2つのファイルが作成されます。

config / initializers / twilio_phone_verification.rb設定ファイル。Twilioからキーと電話番号を入力する必要があります

 TwilioPhoneVerification.configure do |config| config.account_sid = ENV.fetch("TWILIO_ACCOUNT_SID") # Paste account id here config.auth_token = ENV.fetch("TWILIO_AUTH_TOKEN") # Paste your twilio auth token here config.from = ENV.fetch("TWILIO_NUMBER") # Paste your twilio number here end 

およびdb / migrate / 000000000000000_add_phone_to_users.rb移行により、必要なフィールドが作成されます。

 class AddPhoneToUsers < ActiveRecord::Migration[5.0] def self.up add_column :users, :phone, :string add_column :users, :phone_confirmation_token, :string add_column :users, :phone_confirmed_at, :datetime add_column :users, :phone_confirmation_sent_at, :datetime add_index :users, :phone, unique: true end def self.down remove_column :users, :phone remove_column :users, :phone_confirmation_token remove_column :users, :phone_confirmed_at remove_column :users, :phone_confirmation_sent_at end end 

次に、コマンドを実行します。

 rails db:migrate # rails 5 rake db:migrate # rails < 5 

そして、必要なメソッドが追加されるようにモデルにコンサーンを追加します。

 class User < ActiveRecord::Base include TwilioPhoneVerification::Phonable end 

これにより、4つの主なメソッドが追加されます。phone_confirmed? 電話が確認されたかどうかに応じて、 trueまたはfalseを返します

send_phone_confirmationはコードを生成し、 テキストメッセージを送信します 。 SMSが送信された場合は{success:true}を返し、送信されなかった場合はfalseを返します。 新しいSMSが生成されるたび。 また、コードは1分間に1回しか送信できません。

confirm_phone_by_code(code)trueを返し、コードが正しい場合は電話番号を検証し、そうでない場合はfalseを検証します

confirm_phoneは、コードを確認せずに電話番号を検証します。

メソッドがfalseを返す場合、エラーは.errorsに追加されます

2つのタイムスタンプもあります。

電話が確認されたときのphone_confirmed_at
最後のSMSが送信されたときのphone_confirmation_sent_at

Githubリポジトリ

以上です。 ご清聴ありがとうございました。

Source: https://habr.com/ru/post/J314254/


All Articles