mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
2.0 KiB
48 lines
2.0 KiB
# frozen_string_literal: true
|
|
|
|
class SubmitFormDelegateController < ApplicationController
|
|
skip_before_action :authenticate_user!
|
|
skip_authorization_check
|
|
|
|
before_action :load_submitter
|
|
|
|
def create
|
|
return redirect_to submit_form_path(@submitter.slug) if @submitter.declined_at? ||
|
|
@submitter.completed_at? ||
|
|
@submitter.submission.archived_at? ||
|
|
@submitter.submission.expired? ||
|
|
@submitter.submission.template&.archived_at? ||
|
|
!Submitters::AuthorizedForForm.call(@submitter,
|
|
current_user,
|
|
request)
|
|
|
|
@submitter.account.account_configs.find_by!(key: AccountConfig::ALLOW_TO_DELEGATE_KEY, value: true)
|
|
|
|
email = Submissions.normalize_email(params[:email])
|
|
|
|
return redirect_to submit_form_path(@submitter.slug) if email.blank?
|
|
|
|
old_slug = @submitter.slug
|
|
|
|
ApplicationRecord.transaction do
|
|
@submitter.submitter_versions.create!(slug: old_slug, email: @submitter.email,
|
|
name: @submitter.name, phone: @submitter.phone)
|
|
|
|
SubmissionEvents.create_with_tracking_data(@submitter, 'delegate_form', request,
|
|
{ old_email: @submitter.email, email: })
|
|
|
|
@submitter.update!(email:, phone: nil, name: nil, slug: SecureRandom.base58(14))
|
|
end
|
|
|
|
SendSubmitterInvitationEmailJob.perform_async('submitter_id' => @submitter.id)
|
|
|
|
redirect_to submit_form_delegated_path(old_slug)
|
|
end
|
|
|
|
private
|
|
|
|
def load_submitter
|
|
@submitter = Submitter.find_by!(slug: params[:submit_form_slug])
|
|
end
|
|
end
|