Vérifier le code de vérification

La dernière partie du processus consiste à demander à l'utilisateur de saisir le code qu'il a reçu et de confirmer qu'il correspond à celui qui a été envoyé par l'API Verify.

Tout d'abord, ajoutez un nouvel itinéraire :

config/routes.rb

Rails.application.routes.draw do
  devise_for :users
  resources :verifications, only: [:edit, :update]

  root to: 'kittens#index'
end

Créez ensuite un contrôleur de base :

app/controllers/verifications_controller.rb

class VerificationsController < ApplicationController
  skip_before_action :verify_user!
 
  def edit
  end
 
  def update
  end
end

Notez qu'il est important d'ignorer la section before_action nous avons ajouté à la ApplicationController afin que le navigateur ne se retrouve pas dans une boucle infinie de redirections.

Créez une vue permettant à l'utilisateur de saisir son code de vérification :

app/views/verifications/edit.html.erb

<div class="panel panel-default devise-bs">
  <div class="panel-heading">
    <h4>Verify code</h4>
  </div>
  <div class="panel-body">
    <%= form_tag verification_path(id: params[:id]), method: :put do %>
      <div class="form-group">
        <%= label_tag :code %><br />
        <%= number_field_tag :code, class: "form-control"  %>
      </div>
      <%= submit_tag 'Verify', class: "btn btn-primary" %>
    <% end %>
  </div>
</div>

<%= link_to 'Send me a new code', :root %>

L'utilisateur soumet ensuite son code à la nouvelle application update l'action. Dans le cadre de cette action, vous devez prendre les mesures suivantes request_id et code et les transmettre au check_verification_request méthode :

app/controllers/verifications_controller.rb

def update
  confirmation = Vonage::Client.new.verify.check(
    request_id: params[:id],
    code: params[:code]
  )
 
  if confirmation['status'] == '0'
    session[:verified] = true
    redirect_to :root, flash: { success: 'Welcome back.' }
  else
    redirect_to edit_verification_path(id: params[:id]), flash[:error] = confirmation['error_text'] 
  end
end

Lorsque la vérification est réussie, le statut de l'utilisateur est défini comme vérifié et il est redirigé vers la page principale. Si la vérification échoue, un message s'affiche, décrivant ce qui n'a pas fonctionné

Authentification à deux facteurs pour la sécurité et la prévention du spam

Apprenez à mettre en œuvre 2fa dans vos Applications Ruby

Étapes
1
Introduction
2
Créer l'application de base
3
Exiger un numéro de téléphone
4
Envoyer la demande de vérification
5
Vérifier le code de vérification
6
Essayez-le !