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