@@ -9,15 +9,15 @@ class SubmitFormController < ApplicationController
99
1010 before_action :load_submitter , only : %i[ show update completed ]
1111 before_action :maybe_render_locked_page , only : :show
12- before_action :maybe_require_link_2fa , only : %i[ show update ]
12+ before_action :maybe_require_link_2fa , only : %i[ show ]
1313
1414 CONFIG_KEYS = [ ] . freeze
1515
1616 def show
1717 submission = @submitter . submission
1818
19+ return render :email_2fa unless Submitters ::AuthorizedForForm . pass_email_2fa? ( @submitter , request )
1920 return redirect_to submit_form_completed_path ( @submitter . slug ) if @submitter . completed_at?
20- return render :email_2fa if require_email_2fa? ( @submitter )
2121
2222 @form_configs = Submitters ::FormConfigs . call ( @submitter , CONFIG_KEYS )
2323
@@ -48,7 +48,7 @@ def show
4848 end
4949
5050 def update
51- if require_email_2fa? ( @submitter )
51+ unless Submitters :: AuthorizedForForm . call ( @submitter , current_user , request )
5252 return render json : { error : I18n . t ( 'verification_required_refresh_the_page_and_pass_2fa' ) } ,
5353 status : :unprocessable_content
5454 end
@@ -84,18 +84,17 @@ def update
8484 def completed
8585 raise ActionController ::RoutingError , I18n . t ( 'not_found' ) if @submitter . account . archived_at?
8686
87- redirect_to submit_form_path ( params [ :submit_form_slug ] ) if require_email_2fa? ( @submitter )
87+ return if Submitters ::AuthorizedForForm . call ( @submitter , current_user , request )
88+
89+ redirect_to submit_form_path ( params [ :submit_form_slug ] )
8890 end
8991
9092 def success ; end
9193
9294 private
9395
9496 def maybe_require_link_2fa
95- return if @submitter . submission . source != 'link'
96- return unless @submitter . submission . template &.preferences &.dig ( 'shared_link_2fa' ) == true
97- return if cookies . encrypted [ :email_2fa_slug ] == @submitter . slug
98- return if @submitter . email == current_user &.email && current_user &.account_id == @submitter . account_id
97+ return if Submitters ::AuthorizedForForm . pass_link_2fa? ( @submitter , current_user , request )
9998
10099 redirect_to start_form_path ( @submitter . submission . template . slug )
101100 end
@@ -117,12 +116,4 @@ def build_attachments_index(submission)
117116 ActiveStorage ::Attachment . where ( record : submission . submitters , name : :attachments )
118117 . preload ( :blob ) . index_by ( &:uuid )
119118 end
120-
121- def require_email_2fa? ( submitter )
122- return false if submitter . submission . template &.preferences &.dig ( 'require_email_2fa' ) != true &&
123- submitter . preferences [ 'require_email_2fa' ] != true
124- return false if cookies . encrypted [ :email_2fa_slug ] == submitter . slug
125-
126- true
127- end
128119end
0 commit comments