Skip to content

Commit 055f7e2

Browse files
authored
Merge from docusealco/wip
2 parents c88715d + dae3b4b commit 055f7e2

File tree

91 files changed

+1140
-250
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+1140
-250
lines changed

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ GEM
387387
puma (6.5.0)
388388
nio4r (~> 2.0)
389389
racc (1.8.1)
390-
rack (3.1.14)
390+
rack (3.1.16)
391391
rack-proxy (0.7.7)
392392
rack
393393
rack-session (2.0.0)

app/controllers/api/submissions_controller.rb

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class SubmissionsController < ApiBaseController
1010
end
1111

1212
def index
13-
submissions = Submissions.search(@submissions, params[:q])
13+
submissions = Submissions.search(current_user, @submissions, params[:q])
1414
submissions = filter_submissions(submissions, params)
1515

1616
submissions = paginate(submissions.preload(:created_by_user, :submitters,
@@ -80,6 +80,8 @@ def create
8080
end
8181
end
8282

83+
SearchEntries.enqueue_reindex(submissions)
84+
8385
render json: build_create_json(submissions)
8486
rescue Submitters::NormalizeValues::BaseError, Submissions::CreateFromSubmitters::BaseError,
8587
DownloadUtils::UnableToDownload => e
@@ -183,14 +185,14 @@ def create_submissions(template, params)
183185
def submissions_params
184186
permitted_attrs = [
185187
:send_email, :send_sms, :bcc_completed, :completed_redirect_url, :reply_to, :go_to_last,
186-
:expire_at,
188+
:expire_at, :name,
187189
{
188190
message: %i[subject body],
189191
submitters: [[:send_email, :send_sms, :completed_redirect_url, :uuid, :name, :email, :role,
190192
:completed, :phone, :application_key, :external_id, :reply_to, :go_to_last,
191193
{ metadata: {}, values: {}, roles: [], readonly_fields: [], message: %i[subject body],
192194
fields: [:name, :uuid, :default_value, :value, :title, :description,
193-
:readonly, :validation_pattern, :invalid_message,
195+
:readonly, :required, :validation_pattern, :invalid_message,
194196
{ default_value: [], value: [], preferences: {} }] }]]
195197
}
196198
]

app/controllers/api/submitters_controller.rb

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class SubmittersController < ApiBaseController
55
load_and_authorize_resource :submitter
66

77
def index
8-
submitters = Submitters.search(@submitters, params[:q])
8+
submitters = Submitters.search(current_user, @submitters, params[:q])
99

1010
submitters = filter_submitters(submitters, params)
1111

@@ -37,14 +37,16 @@ def update
3737
return render json: { error: 'Submitter has already completed the submission.' }, status: :unprocessable_entity
3838
end
3939

40-
role = @submitter.submission.template_submitters.find { |e| e['uuid'] == @submitter.uuid }['name']
40+
submission = @submitter.submission
41+
role = submission.template_submitters.find { |e| e['uuid'] == @submitter.uuid }['name']
4142

42-
normalized_params, new_attachments =
43-
Submissions::NormalizeParamUtils.normalize_submitter_params!(submitter_params.merge(role:), @submitter.template,
44-
for_submitter: @submitter)
43+
normalized_params, new_attachments = Submissions::NormalizeParamUtils.normalize_submitter_params!(
44+
submitter_params.merge(role:),
45+
@submitter.template || Template.new(submitters: submission.template_submitters, account: @submitter.account),
46+
for_submitter: @submitter
47+
)
4548

46-
Submissions::CreateFromSubmitters.maybe_set_template_fields(@submitter.submission,
47-
[normalized_params],
49+
Submissions::CreateFromSubmitters.maybe_set_template_fields(submission, [normalized_params],
4850
default_submitter_uuid: @submitter.uuid)
4951

5052
assign_submitter_attrs(@submitter, normalized_params)
@@ -65,10 +67,10 @@ def update
6567
Submitters.send_signature_requests([@submitter])
6668
end
6769

68-
render json: Submitters::SerializeForApi.call(@submitter, with_template: false,
69-
with_urls: true,
70-
with_events: false,
71-
params:)
70+
SearchEntries.enqueue_reindex(@submitter)
71+
72+
render json: Submitters::SerializeForApi.call(@submitter, with_template: false, with_urls: true,
73+
with_events: false, params:)
7274
rescue Submitters::NormalizeValues::BaseError, DownloadUtils::UnableToDownload => e
7375
Rollbar.warning(e) if defined?(Rollbar)
7476

@@ -82,7 +84,7 @@ def submitter_params
8284
:send_email, :send_sms, :reply_to, :completed_redirect_url, :uuid, :name, :email, :role,
8385
:completed, :phone, :application_key, :external_id, :go_to_last,
8486
{ metadata: {}, values: {}, readonly_fields: [], message: %i[subject body],
85-
fields: [[:name, :uuid, :default_value, :value,
87+
fields: [[:name, :uuid, :default_value, :value, :required,
8688
:readonly, :validation_pattern, :invalid_message,
8789
{ default_value: [], value: [], preferences: {} }]] }
8890
)

app/controllers/api/templates_clone_controller.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,20 @@ def create
2121
)
2222

2323
cloned_template.source = :api
24-
cloned_template.save!
2524

2625
schema_documents = Templates::CloneAttachments.call(template: cloned_template,
2726
original_template: @template,
2827
documents: params[:documents])
2928

29+
cloned_template.save!
30+
3031
WebhookUrls.for_account_id(cloned_template.account_id, 'template.created').each do |webhook_url|
3132
SendTemplateCreatedWebhookRequestJob.perform_async('template_id' => cloned_template.id,
3233
'webhook_url_id' => webhook_url.id)
3334
end
3435

36+
SearchEntries.enqueue_reindex(cloned_template)
37+
3538
render json: Templates::SerializeForApi.call(cloned_template, schema_documents)
3639
end
3740
end

app/controllers/api/templates_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ def update
6565

6666
@template.update!(template_params)
6767

68+
SearchEntries.enqueue_reindex(@template)
69+
6870
WebhookUrls.for_account_id(@template.account_id, 'template.updated').each do |webhook_url|
6971
SendTemplateUpdatedWebhookRequestJob.perform_async('template_id' => @template.id,
7072
'webhook_url_id' => webhook_url.id)
@@ -86,7 +88,7 @@ def destroy
8688
private
8789

8890
def filter_templates(templates, params)
89-
templates = Templates.search(templates, params[:q])
91+
templates = Templates.search(current_user, templates, params[:q])
9092
templates = params[:archived].in?(['true', true]) ? templates.archived : templates.active
9193
templates = templates.where(external_id: params[:application_key]) if params[:application_key].present?
9294
templates = templates.where(external_id: params[:external_id]) if params[:external_id].present?

app/controllers/start_form_controller.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ def update
5353
if is_new_record
5454
enqueue_submission_create_webhooks(@submitter)
5555

56+
SearchEntries.enqueue_reindex(@submitter)
57+
5658
if @submitter.submission.expire_at?
5759
ProcessSubmissionExpiredJob.perform_at(@submitter.submission.expire_at,
5860
'submission_id' => @submitter.submission_id)
@@ -142,7 +144,7 @@ def assign_submission_attributes(submitter, template)
142144
end
143145

144146
def filter_undefined_submitters(template)
145-
Templates.filter_undefined_submitters(template)
147+
Templates.filter_undefined_submitters(template.submitters)
146148
end
147149

148150
def submitter_params

app/controllers/submissions_archived_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ class SubmissionsArchivedController < ApplicationController
44
load_and_authorize_resource :submission, parent: false
55

66
def index
7-
@submissions = @submissions.joins(:template)
7+
@submissions = @submissions.left_joins(:template)
88
@submissions = @submissions.where.not(archived_at: nil)
99
.or(@submissions.where.not(templates: { archived_at: nil }))
1010
.preload(:template_accesses, :created_by_user, template: :author)
1111

12-
@submissions = Submissions.search(@submissions, params[:q], search_template: true)
12+
@submissions = Submissions.search(current_user, @submissions, params[:q], search_template: true)
1313
@submissions = Submissions::Filter.call(@submissions, current_user, params)
1414

1515
@submissions = if params[:completed_at_from].present? || params[:completed_at_to].present?

app/controllers/submissions_controller.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ class SubmissionsController < ApplicationController
88

99
prepend_before_action :maybe_redirect_com, only: %i[show]
1010

11+
before_action only: :create do
12+
authorize!(:create, Submission)
13+
end
14+
1115
def show
1216
@submission = Submissions.preload_with_pages(@submission)
1317

@@ -26,8 +30,6 @@ def new
2630
end
2731

2832
def create
29-
authorize!(:create, Submission)
30-
3133
save_template_message(@template, params) if params[:save_message] == '1'
3234

3335
if params[:is_custom_message] != '1'
@@ -56,6 +58,8 @@ def create
5658

5759
Submissions.send_signature_requests(submissions)
5860

61+
SearchEntries.enqueue_reindex(submissions)
62+
5963
redirect_to template_path(@template), notice: I18n.t('new_recipients_have_been_added')
6064
rescue Submissions::CreateFromSubmitters::BaseError => e
6165
render turbo_stream: turbo_stream.replace(:submitters_error,
@@ -81,7 +85,7 @@ def destroy
8185
I18n.t('submission_has_been_archived')
8286
end
8387

84-
redirect_back(fallback_location: template_path(@submission.template), notice:)
88+
redirect_back(fallback_location: @submission.template_id ? template_path(@submission.template) : root_path, notice:)
8589
end
8690

8791
private

app/controllers/submissions_dashboard_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ class SubmissionsDashboardController < ApplicationController
44
load_and_authorize_resource :submission, parent: false
55

66
def index
7-
@submissions = @submissions.joins(:template)
7+
@submissions = @submissions.left_joins(:template)
88

99
@submissions = @submissions.where(archived_at: nil)
1010
.where(templates: { archived_at: nil })
1111
.preload(:template_accesses, :created_by_user, template: :author)
1212

13-
@submissions = Submissions.search(@submissions, params[:q], search_template: true)
13+
@submissions = Submissions.search(current_user, @submissions, params[:q], search_template: true)
1414
@submissions = Submissions::Filter.call(@submissions, current_user, params)
1515

1616
@submissions = if params[:completed_at_from].present? || params[:completed_at_to].present?

app/controllers/submit_form_controller.rb

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,22 @@ class SubmitFormController < ApplicationController
88
skip_authorization_check
99

1010
before_action :load_submitter, only: %i[show update completed]
11+
before_action :maybe_render_locked_page, only: :show
1112

1213
CONFIG_KEYS = [].freeze
1314

1415
def show
1516
submission = @submitter.submission
1617

1718
return redirect_to submit_form_completed_path(@submitter.slug) if @submitter.completed_at?
18-
return render :archived if submission.template.archived_at? ||
19-
submission.archived_at? ||
20-
@submitter.account.archived_at?
21-
return render :expired if submission.expired?
22-
return render :declined if @submitter.declined_at?
2319

2420
@form_configs = Submitters::FormConfigs.call(@submitter, CONFIG_KEYS)
2521

2622
return render :awaiting if (@form_configs[:enforce_signing_order] ||
27-
submission.template.preferences['submitters_order'] == 'preserved') &&
23+
submission.template&.preferences&.dig('submitters_order') == 'preserved') &&
2824
!Submitters.current_submitter_order?(@submitter)
2925

30-
Submitters.preload_with_pages(@submitter)
26+
Submissions.preload_with_pages(submission)
3127

3228
Submitters::MaybeUpdateDefaultValues.call(@submitter, current_user)
3329

@@ -54,7 +50,7 @@ def update
5450
return render json: { error: I18n.t('form_has_been_completed_already') }, status: :unprocessable_entity
5551
end
5652

57-
if @submitter.template.archived_at? || @submitter.submission.archived_at?
53+
if @submitter.template&.archived_at? || @submitter.submission.archived_at?
5854
return render json: { error: I18n.t('form_has_been_archived') }, status: :unprocessable_entity
5955
end
6056

@@ -84,6 +80,15 @@ def success; end
8480

8581
private
8682

83+
def maybe_render_locked_page
84+
return render :archived if @submitter.submission.template&.archived_at? ||
85+
@submitter.submission.archived_at? ||
86+
@submitter.account.archived_at?
87+
return render :expired if @submitter.submission.expired?
88+
89+
render :declined if @submitter.declined_at?
90+
end
91+
8792
def load_submitter
8893
@submitter = Submitter.find_by!(slug: params[:slug] || params[:submit_form_slug])
8994
end

0 commit comments

Comments
 (0)