verification
This commit is contained in:
@@ -234,6 +234,11 @@ module Submissions
|
||||
e['type'] == 'phone' && e['submitter_uuid'] == submitter.uuid && submitter.values[e['uuid']].present?
|
||||
end
|
||||
|
||||
is_id_verified =
|
||||
submission.template_fields.any? do |e|
|
||||
e['type'] == 'verification' && e['submitter_uuid'] == submitter.uuid && submitter.values[e['uuid']].present?
|
||||
end
|
||||
|
||||
submitter_field_counters = Hash.new { 0 }
|
||||
|
||||
info_rows = [
|
||||
@@ -256,6 +261,9 @@ module Submissions
|
||||
submitter.phone && is_phone_verified && {
|
||||
text: "#{I18n.t('phone_verification')}: #{I18n.t('verified')}\n"
|
||||
},
|
||||
is_id_verified && {
|
||||
text: "#{I18n.t('identity_verification')}: #{I18n.t('verified')}\n"
|
||||
},
|
||||
completed_event.data['ip'] && { text: "IP: #{completed_event.data['ip']}\n" },
|
||||
completed_event.data['sid'] && { text: "#{I18n.t('session_id')}: #{completed_event.data['sid']}\n" },
|
||||
completed_event.data['ua'] && { text: "User agent: #{completed_event.data['ua']}\n" },
|
||||
@@ -376,9 +384,12 @@ module Submissions
|
||||
end
|
||||
|
||||
text =
|
||||
if event.event_type == 'invite_party' &&
|
||||
(invited_submitter = submission.submitters.find { |e| e.uuid == event.data['uuid'] }) &&
|
||||
(name = submission.template_submitters.find { |e| e['uuid'] == event.data['uuid'] }&.dig('name'))
|
||||
if event.event_type == 'complete_verification'
|
||||
I18n.t('submission_event_names.complete_verification_by_html', provider: event.data['method'],
|
||||
submitter_name:)
|
||||
elsif event.event_type == 'invite_party' &&
|
||||
(invited_submitter = submission.submitters.find { |e| e.uuid == event.data['uuid'] }) &&
|
||||
(name = submission.template_submitters.find { |e| e['uuid'] == event.data['uuid'] }&.dig('name'))
|
||||
invited_submitter_name = [invited_submitter.name || invited_submitter.email || invited_submitter.phone,
|
||||
name].join(' ')
|
||||
I18n.t('submission_event_names.invite_party_by_html', invited_submitter_name:,
|
||||
|
||||
@@ -5,8 +5,12 @@ module Submissions
|
||||
module_function
|
||||
|
||||
# rubocop:disable Metrics
|
||||
def call(submission, values_hash: nil)
|
||||
values_hash ||= build_values_hash(submission)
|
||||
def call(submission, values_hash: nil, submitter: nil)
|
||||
values_hash ||= if submitter
|
||||
build_submitter_values_hash(submitter)
|
||||
else
|
||||
build_values_hash(submission)
|
||||
end
|
||||
|
||||
configs = submission.account.account_configs.where(key: [AccountConfig::FLATTEN_RESULT_PDF_KEY,
|
||||
AccountConfig::WITH_SIGNATURE_ID])
|
||||
@@ -16,8 +20,14 @@ module Submissions
|
||||
|
||||
pdfs_index = GenerateResultAttachments.build_pdfs_index(submission, flatten: is_flatten)
|
||||
|
||||
submission.submitters.where(completed_at: nil).preload(attachments_attachments: :blob).each do |submitter|
|
||||
GenerateResultAttachments.fill_submitter_fields(submitter, submission.account, pdfs_index,
|
||||
submitters = if submitter
|
||||
submission.submitters.where(id: submitter.id)
|
||||
else
|
||||
submission.submitters.where(completed_at: nil)
|
||||
end
|
||||
|
||||
submitters.preload(attachments_attachments: :blob).each do |s|
|
||||
GenerateResultAttachments.fill_submitter_fields(s, submission.account, pdfs_index,
|
||||
with_signature_id:, is_flatten:)
|
||||
end
|
||||
|
||||
@@ -36,7 +46,7 @@ module Submissions
|
||||
image_pdfs << pdf
|
||||
end
|
||||
|
||||
build_pdf_attachment(pdf:, submission:,
|
||||
build_pdf_attachment(pdf:, submission:, submitter:,
|
||||
uuid: item['attachment_uuid'],
|
||||
values_hash:,
|
||||
name: item['name'])
|
||||
@@ -55,6 +65,7 @@ module Submissions
|
||||
build_pdf_attachment(
|
||||
pdf: images_pdf,
|
||||
submission:,
|
||||
submitter:,
|
||||
uuid: GenerateResultAttachments.images_pdf_uuid(original_documents.select(&:image?)),
|
||||
values_hash:,
|
||||
name: template.name
|
||||
@@ -69,7 +80,14 @@ module Submissions
|
||||
submission.submitters.reduce({}) { |acc, s| acc.merge(s.values) }.hash
|
||||
end
|
||||
|
||||
def build_pdf_attachment(pdf:, submission:, uuid:, name:, values_hash:)
|
||||
def build_submitter_values_hash(submitter)
|
||||
submission = submitter.submission
|
||||
|
||||
submission.submitters.where.not(completed_at: nil).or(submission.submitters.where(id: submitter.id))
|
||||
.reduce({}) { |acc, s| acc.merge(s.values) }.hash
|
||||
end
|
||||
|
||||
def build_pdf_attachment(pdf:, submission:, submitter:, uuid:, name:, values_hash:)
|
||||
io = StringIO.new
|
||||
|
||||
begin
|
||||
@@ -82,12 +100,13 @@ module Submissions
|
||||
|
||||
ActiveStorage::Attachment.new(
|
||||
blob: ActiveStorage::Blob.create_and_upload!(io: io.tap(&:rewind), filename: "#{name}.pdf"),
|
||||
io_data: io.string,
|
||||
metadata: { original_uuid: uuid,
|
||||
values_hash:,
|
||||
analyzed: true,
|
||||
sha256: Base64.urlsafe_encode64(Digest::SHA256.digest(io.string)) },
|
||||
name: 'preview_documents',
|
||||
record: submission
|
||||
record: submitter || submission
|
||||
)
|
||||
end
|
||||
# rubocop:enable Metrics
|
||||
|
||||
@@ -42,6 +42,8 @@ module Submissions
|
||||
|
||||
# rubocop:disable Metrics
|
||||
def call(submitter)
|
||||
return generate_detached_signature_attachments(submitter) if detached_signature?(submitter)
|
||||
|
||||
pdfs_index = generate_pdfs(submitter)
|
||||
|
||||
template = submitter.submission.template
|
||||
@@ -675,6 +677,14 @@ module Submissions
|
||||
"#{Docuseal.product_name} (#{Docuseal::PRODUCT_URL})"
|
||||
end
|
||||
|
||||
def detached_signature?(_submitter)
|
||||
false
|
||||
end
|
||||
|
||||
def generate_detached_signature_attachments(_submitter)
|
||||
[]
|
||||
end
|
||||
|
||||
def h
|
||||
Rails.application.routes.url_helpers
|
||||
end
|
||||
|
||||
@@ -128,6 +128,17 @@ module Submitters
|
||||
next
|
||||
end
|
||||
|
||||
if field['type'] == 'verification'
|
||||
acc[field['uuid']] =
|
||||
if submitter.submission_events.exists?(event_type: :complete_verification)
|
||||
I18n.t(:verified, locale: :en)
|
||||
elsif field['required']
|
||||
raise ValidationError, 'ID Not Verified'
|
||||
end
|
||||
|
||||
next
|
||||
end
|
||||
|
||||
value = field['default_value']
|
||||
|
||||
next if value.blank?
|
||||
|
||||
Reference in New Issue
Block a user