Separate into two concerns: onsite verification + onsite verification emails

This commit is contained in:
kikito
2015-10-01 14:18:11 +02:00
parent 988304e3df
commit 4bb02ff564
11 changed files with 98 additions and 52 deletions

View File

@@ -0,0 +1,25 @@
class Management::OnSiteVerificationEmailsController < Management::BaseController
def new
@verification_on_site_email = Verification::OnSiteEmail.new(verification_on_site_email_params)
end
def create
@verification_on_site_email = Verification::OnSiteEmail.new(verification_on_site_email_params)
if @verification_on_site_email.valid?
@verification_on_site_email.send_email
render :sent
else
render :new
end
end
private
def verification_on_site_email_params
params.require(:verification_on_site_email).permit(:document_type, :document_number, :email)
end
end

View File

@@ -1,4 +1,4 @@
class Management::OnSiteVerificationsController < ActionController::Base class Management::OnSiteVerificationsController < Management::BaseController
def index def index
@verification_on_site = Verification::OnSite.new() @verification_on_site = Verification::OnSite.new()
@@ -13,7 +13,7 @@ class Management::OnSiteVerificationsController < ActionController::Base
elsif @verification_on_site.user? elsif @verification_on_site.user?
render :new render :new
elsif @verification_on_site.in_census? elsif @verification_on_site.in_census?
render :existing_user redirect_to new_management_on_site_verification_email_path(verification_on_site_email: verification_on_site_params)
else else
render :invalid_document render :invalid_document
end end
@@ -28,27 +28,13 @@ class Management::OnSiteVerificationsController < ActionController::Base
render :verified render :verified
end end
def send_email
@verification_on_site = Verification::OnSite.new(verification_on_site_with_email_params)
@verification_on_site.should_validate_email = true
if @verification_on_site.valid?
@verification_on_site.send_verification_email
render :email_sent
else
render :existing_user
end
end
private private
def verification_on_site_params def verification_on_site_params
params.require(:verification_on_site).permit(:document_type, :document_number) params.require(:verification_on_site).permit(:document_type, :document_number)
end end
def verification_on_site_with_email_params
params.require(:verification_on_site).permit(:document_type, :document_number, :email)
end
end end

View File

@@ -3,16 +3,11 @@ class Verification::OnSite
attr_accessor :document_type attr_accessor :document_type
attr_accessor :document_number attr_accessor :document_number
attr_accessor :email
attr_accessor :should_validate_email
validates :document_type, :document_number, presence: true validates :document_type, :document_number, presence: true
validate :validate_email, if: :should_validate_email
def user def user
@user ||= @user = User.by_document(document_type, document_number).first
User.where(email: email).first ||
User.by_document(document_type, document_number).first
end end
def user? def user?
@@ -31,22 +26,6 @@ class Verification::OnSite
user.update(verified_at: Time.now) if user? user.update(verified_at: Time.now) if user?
end end
def send_verification_email
# FIXME
# Should assign document_number here?
# Should send verification email here?
end
def validate_email
if email.blank?
errors.add(:email, I18n.t('errors.messages.blank'))
elsif email !~ Devise.email_regexp
errors.add(:email, I18n.t('errors.messages.invalid'))
elsif !user?
errors.add(:email, I18n.t('errors.messages.user_not_found')) unless user?
end
end
end end

View File

@@ -0,0 +1,34 @@
class Verification::OnSiteEmail
include ActiveModel::Model
attr_accessor :document_type
attr_accessor :document_number
attr_accessor :email
validates :document_type, :document_number, presence: true
validate :validate_email
def user
@user ||= User.where(email: email).first
end
def user?
user.present?
end
def send_email
# FIXME
# Should assign document_number here?
# Should send verification email here?
end
def validate_email
if email.blank?
errors.add(:email, I18n.t('errors.messages.blank'))
elsif email !~ Devise.email_regexp
errors.add(:email, I18n.t('errors.messages.invalid'))
elsif !user?
errors.add(:email, I18n.t('errors.messages.user_not_found')) unless user?
end
end
end

View File

@@ -0,0 +1,14 @@
<nav class="admin-sidebar">
<ul id="admin_menu">
<li>
<%= link_to t("management.dashboard.index.title"), management_root_path %>
</li>
<li <%= "class=active" if controller_name == "on_site_verifications" %>>
<%= link_to management_on_site_verifications_path do %>
<i class="icon-tag"></i>
<%= t("management.menu.on_site_verifications") %>
<% end %>
</li>
</ul>
</nav>

View File

@@ -0,0 +1,3 @@
<div class="dashboard">
<h2><%= t("management.dashboard.index.title") %></h2>
</div>

View File

@@ -1,6 +1,6 @@
<p class="account-info"> <p class="account-info">
<%= t("management.document_type_label") %> <strong><%= humanize_document_type(@verification_on_site.document_type) %></strong> <%= t("management.document_type_label") %> <strong><%= humanize_document_type(@verification_on_site_email.document_type) %></strong>
<%= t("management.document_number") %> <strong><%= @verification_on_site.document_number %></strong> <%= t("management.document_number") %> <strong><%= @verification_on_site_email.document_number %></strong>
</p> </p>
<div class="alert-box success radius"> <div class="alert-box success radius">
@@ -13,10 +13,11 @@
<p><%= t("management.users.has_account_note") %></p> <p><%= t("management.users.has_account_note") %></p>
<%= form_for @verification_on_site, url: send_email_management_on_site_verifications_path do |f| %> <%= form_for @verification_on_site_email, url: management_on_site_verification_emails_path do |f| %>
<%= f.hidden_field :document_type %> <%= f.hidden_field :document_type %>
<%= f.hidden_field :document_number %> <%= f.hidden_field :document_number %>
<%= f.text_field :email, label: false, placeholder: t('management.users.has_account_placeholder') %> <%= f.text_field :email, label: false, placeholder: t('management.users.has_account_placeholder') %>
<%= f.submit t("management.users.has_account_send_email"), class: "button success radius" %> <%= f.submit t("management.users.has_account_send_email"), class: "button success radius" %>
<% end %> <% end %>
</li> </li>
@@ -25,7 +26,7 @@
<strong><%= t("management.users.has_not_account") %></strong> <strong><%= t("management.users.has_not_account") %></strong>
<p class="margin-top"> <p class="margin-top">
<a href="#" class="button radius success"><%= t("management.users.create_user") %></a> <a href="javascript:window.print();" class="button warning radius"><%= t("management.print_info") %></a>
</p> </p>
</li> </li>
</ul> </ul>

View File

@@ -1,12 +1,10 @@
<p class="account-info"> <p class="account-info">
<%= t("management.document_type_label") %> <strong><%= humanize_document_type(@verification_on_site.document_type) %></strong> <%= t("management.document_type_label") %> <strong><%= humanize_document_type(@verification_on_site_email.document_type) %></strong>
<%= t("management.document_number") %> <strong><%= @verification_on_site.document_number %></strong> <%= t("management.document_number") %> <strong><%= @verification_on_site_email.document_number %></strong>
<%= t("management.username_label") %> <strong><%= @verification_on_site.user.username %></strong> <%= t("management.username_label") %> <strong><%= @verification_on_site_email.user.username %></strong>
<%= t("management.email_label") %> <strong><%= @verification_on_site.user.email %></strong> <%= t("management.email_label") %> <strong><%= @verification_on_site_email.user.email %></strong>
</p> </p>
<p class="account-info"><%= t("management.document_type_label") %> <strong>DNI</strong> <%= t("management.document_number") %> <strong>73562454D</strong> <%= t("management.username_label") %> <strong>Alberto</strong> <%= t("management.email_label") %> <strong>alberto@mail.com</strong> </p>
<div class="alert-box success radius"> <div class="alert-box success radius">
<%= t("management.users.email_sent") %> <%= t("management.users.email_sent") %>
</div> </div>

View File

@@ -1,4 +1,4 @@
<h2><%= t("management.verification_on_sites.title") %></h2> <h2><%= t("management.users.title") %></h2>
<div class="row"> <div class="row">
<div class="small-12 medium-8 column"> <div class="small-12 medium-8 column">

View File

@@ -7,9 +7,13 @@ es:
check: "Comprobar" check: "Comprobar"
document_number: "Número de documento" document_number: "Número de documento"
document_type_label: "Tipo de documento" document_type_label: "Tipo de documento"
menu:
on_site_verifications: "Usuarios"
on_site_verifications: on_site_verifications:
title: "Gestionar usuario" title: "Gestionar usuario"
dashboard:
index:
title: "Gestión"
users: users:
title: "Gestionar usuario" title: "Gestionar usuario"
census_error: "Este documento no está registrado en el Padrón Municipal de Madrid." census_error: "Este documento no está registrado en el Padrón Municipal de Madrid."

View File

@@ -169,10 +169,12 @@ Rails.application.routes.draw do
resources :on_site_verifications, only: [:index, :new, :create] do resources :on_site_verifications, only: [:index, :new, :create] do
collection do collection do
post :check post :check
post :send_email
end end
end end
resources :on_site_verification_emails, only: [:new, :create]
end end
# Example of regular route: # Example of regular route: