Skip to content

Commit 10d45c3

Browse files
committed
add checks
1 parent 6fb247e commit 10d45c3

6 files changed

Lines changed: 24 additions & 6 deletions

File tree

app/controllers/start_form_controller.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,13 +108,16 @@ def load_resubmit_submitter
108108
end
109109

110110
def can_resubmit?(submitter)
111-
%w[api embed mcp].exclude?(submitter.submission.source) &&
111+
submitter.completed_at? && submitter.completed_at > 14.days.ago &&
112+
%w[api embed mcp].exclude?(submitter.submission.source) &&
112113
submitter.account.account_configs.find_or_initialize_by(key: AccountConfig::ALLOW_TO_RESUBMIT).value != false
113114
end
114115

115116
def authorize_start!
116-
return redirect_to submit_form_path(@resubmit_submitter.slug) if @resubmit_submitter && @template.archived_at?
117-
return redirect_to start_form_path(@template.slug) if @template.archived_at?
117+
is_archived = @template.archived_at? || @template.account.archived_at?
118+
119+
return redirect_to submit_form_path(@resubmit_submitter.slug) if @resubmit_submitter && is_archived
120+
return redirect_to start_form_path(@template.slug) if is_archived
118121

119122
return if @resubmit_submitter
120123
return if @template.shared_link? || (current_user && current_ability.can?(:read, @template))

app/controllers/submit_form_decline_controller.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ class SubmitFormDeclineController < ApplicationController
77
before_action :load_submitter
88

99
def create
10-
return redirect_to submit_form_path(@submitter.slug) if @submitter.declined_at? ||
10+
return redirect_to submit_form_path(@submitter.slug) if declining_disabled? ||
11+
@submitter.declined_at? ||
1112
@submitter.completed_at? ||
1213
@submitter.submission.archived_at? ||
1314
@submitter.submission.expired? ||
@@ -35,6 +36,10 @@ def create
3536

3637
private
3738

39+
def declining_disabled?
40+
@submitter.account.account_configs.find_by(key: AccountConfig::ALLOW_TO_DECLINE_KEY)&.value == false
41+
end
42+
3843
def load_submitter
3944
@submitter = Submitter.find_by!(slug: params[:submit_form_slug])
4045
end

app/controllers/submitters_controller.rb

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def edit
1313
def update
1414
submission = @submitter.submission
1515

16-
if @submitter.submission_events.exists?(event_type: 'start_form') || submission.archived_at? || submission.expired?
16+
unless submitter_editable?(submission)
1717
return redirect_back fallback_location: submission_path(submission), alert: I18n.t('submitter_cannot_be_updated')
1818
end
1919

@@ -48,6 +48,12 @@ def update
4848

4949
private
5050

51+
def submitter_editable?(submission)
52+
!@submitter.submission_events.exists?(event_type: 'start_form') &&
53+
!@submitter.completed_at? && !@submitter.declined_at? &&
54+
!submission.archived_at? && !submission.expired? && !submission.template&.archived_at?
55+
end
56+
5157
def maybe_resend_email_sms(submitter, params)
5258
if params[:send_email] == '1' && submitter.email.present?
5359
is_sent_recently = Docuseal.multitenant? &&

app/controllers/submitters_resubmit_controller.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ class SubmittersResubmitController < ApplicationController
55

66
def update
77
return redirect_to submit_form_path(slug: @submitter.slug) if @submitter.email != current_user.email
8+
return redirect_to submit_form_path(slug: @submitter.slug) if @submitter.completed_at.blank? ||
9+
@submitter.completed_at < 1.month.ago
810

911
submission = @submitter.account.submissions.new(created_by_user: current_user,
1012
submitters_order: :preserved,

app/jobs/send_submitter_invitation_email_job.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@ def perform(params = {})
77
submitter = Submitter.find(params['submitter_id'])
88

99
return if submitter.completed_at?
10+
return if submitter.declined_at?
1011
return if submitter.submission.archived_at?
12+
return if submitter.submission.expired?
1113
return if submitter.template&.archived_at?
1214
return if submitter.submission.source == 'invite' && !Accounts.can_send_emails?(submitter.account, on_events: true)
1315

app/views/submit_form/completed.html.erb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<% end %>
4444
</div>
4545
<% undefined_submitters = Templates.filter_undefined_submitters(@submitter.submission.template_submitters) %>
46-
<% if undefined_submitters.size == 1 && undefined_submitters.first['uuid'] == @submitter.uuid && %w[api embed mcp].exclude?(@submitter.submission.source) && @submitter.account.account_configs.find_or_initialize_by(key: AccountConfig::ALLOW_TO_RESUBMIT).value != false && @submitter.template && !@submitter.template.archived_at? %>
46+
<% if undefined_submitters.size == 1 && undefined_submitters.first['uuid'] == @submitter.uuid && @submitter.completed_at? && @submitter.completed_at > 14.days.ago && %w[api embed mcp].exclude?(@submitter.submission.source) && @submitter.account.account_configs.find_or_initialize_by(key: AccountConfig::ALLOW_TO_RESUBMIT).value != false && @submitter.template && !@submitter.template.archived_at? %>
4747
<div class="divider uppercase"><%= t('or') %></div>
4848
<toggle-submit class="block">
4949
<%= button_to button_title(title: t('resubmit'), disabled_with: t('resubmit'), icon: svg_icon('reload', class: 'w-6 h-6')), resubmit_form_path, params: { resubmit: @submitter.slug }, method: :put, class: 'white-button w-full' %>

0 commit comments

Comments
 (0)