app/controllers/verification/email_controller.rb
class Verification::EmailController < ApplicationController
before_action :authenticate_user!
before_action :verify_verified!
before_action :set_verified_user, only: :create
skip_authorization_check
def show
if Verification::Email.find(current_user, params[:email_verification_token])
current_user.update(verified_at: Time.current)
redirect_to account_path, notice: t('verification.email.show.flash.success')
else
redirect_to verified_user_path, alert: t('verification.email.show.alert.failure')
end
end
def create
@email = Verification::Email.new(@verified_user)
if @email.save
current_user.reload
Mailer.email_verification(current_user,
@email.recipient,
@email.encrypted_token,
@verified_user.document_type,
@verified_user.document_number).deliver_later
redirect_to account_path, notice: t('verification.email.create.flash.success', email: @verified_user.email)
else
redirect_to verified_user_path, alert: t('verification.email.create.alert.failure')
end
end
private
def set_verified_user
@verified_user = VerifiedUser.by_user(current_user).where(id: verified_user_params[:id]).first
end
def verified_user_params
params.require(:verified_user).permit(:id)
end
end