Implements Verification::Management::Email#save + refactors
This commit is contained in:
@@ -7,8 +7,7 @@ class Management::EmailVerificationsController < Management::BaseController
|
|||||||
def create
|
def create
|
||||||
@email_verification = Verification::Management::Email.new(email_verification_params)
|
@email_verification = Verification::Management::Email.new(email_verification_params)
|
||||||
|
|
||||||
if @email_verification.valid?
|
if @email_verification.save
|
||||||
@email_verification.send_email
|
|
||||||
render :sent
|
render :sent
|
||||||
else
|
else
|
||||||
render :new
|
render :new
|
||||||
|
|||||||
@@ -5,8 +5,9 @@ class Verification::Management::Email
|
|||||||
attr_accessor :document_number
|
attr_accessor :document_number
|
||||||
attr_accessor :email
|
attr_accessor :email
|
||||||
|
|
||||||
validates :document_type, :document_number, presence: true
|
validates :document_type, :document_number, :email, presence: true
|
||||||
validate :validate_email
|
validates :email, format: { with: Devise.email_regexp }, allow_blank: true
|
||||||
|
validate :validate_user
|
||||||
|
|
||||||
def user
|
def user
|
||||||
@user ||= User.where(email: email).first
|
@user ||= User.where(email: email).first
|
||||||
@@ -16,19 +17,34 @@ class Verification::Management::Email
|
|||||||
user.present?
|
user.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def send_email
|
def save
|
||||||
# FIXME
|
return false unless valid?
|
||||||
# Should assign document_number here?
|
|
||||||
# Should send verification email here?
|
plain_token, encrypted_token = Devise.token_generator.generate(User, :email_verification_token)
|
||||||
|
user.update(email_verification_token: plain_token)
|
||||||
|
Mailer.email_verification(user, email, encrypted_token).deliver_later
|
||||||
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
def validate_email
|
def already_verified?
|
||||||
if email.blank?
|
user? && user.level_three_verified?
|
||||||
errors.add(:email, I18n.t('errors.messages.blank'))
|
end
|
||||||
elsif email !~ Devise.email_regexp
|
|
||||||
errors.add(:email, I18n.t('errors.messages.invalid'))
|
def document_number_mismatch?
|
||||||
elsif !user?
|
user? && user.document_number.present? &&
|
||||||
|
(user.document_number != document_number || user.document_type != document_type)
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate_user
|
||||||
|
return if errors.count > 0
|
||||||
errors.add(:email, I18n.t('errors.messages.user_not_found')) unless user?
|
errors.add(:email, I18n.t('errors.messages.user_not_found')) unless user?
|
||||||
|
if already_verified?
|
||||||
|
errors.add(:email, I18n.t('management.users.already_verified'))
|
||||||
|
elsif document_number_mismatch?
|
||||||
|
errors.add(:email,
|
||||||
|
I18n.t('management.users.document_mismatch',
|
||||||
|
document_type: ApplicationController.helpers.humanize_document_type(user.document_type),
|
||||||
|
document_number: user.document_number))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user