Comprobar el código de verificación

La última parte del proceso consiste en que el usuario introduzca el código que ha recibido y confirme que coincide con el enviado por la API de Verify.

En primer lugar, añade una nueva ruta:

config/routes.rb

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

  root to: 'kittens#index'
end

A continuación, cree un controlador básico:

app/controllers/verifications_controller.rb

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

Obsérvese en lo anterior que es importante omitir el before_action hemos añadido a la ApplicationController antes para que el navegador no acabe en un bucle infinito de redirecciones.

Crea una vista que permita al usuario introducir su código de verificación:

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 %>

A continuación, el usuario envía su código al nuevo update acción. Dentro de esta acción, debes realizar la request_id y code y pasarlos a la check_verification_request método:

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

Cuando la comprobación de verificación se realiza con éxito, el estado del usuario pasa a ser «verificado» y se le redirige a la página principal. Si la comprobación falla, aparece un mensaje en el que se explica qué ha fallado.

Autenticación de dos factores para garantizar la seguridad y prevenir el spam

Aprenda a implementar 2fa en sus aplicaciones Ruby

Pasos
1
Introducción
2
Crear la aplicación básica
3
Solicitar un número de teléfono
4
Enviar la solicitud de verificación
5
Comprobar el código de verificación
6
¡Pruébalo!