mirror of
https://github.com/docusealco/docuseal
synced 2026-11-12 15:42:32 -05:00
carry lang param
This commit is contained in:
1 parent
af4672084d
commit
d3c92cecfa
8 files changed
+29
-23
No files matched your search
@@ -99,6 +99,10 @@ class ApplicationController < ActionController::Base
|
|||||||
I18n.with_locale(locale, &)
|
I18n.with_locale(locale, &)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def lang
|
||||||
|
params[:lang].presence
|
||||||
|
end
|
||||||
|
|
||||||
def with_browser_locale(&)
|
def with_browser_locale(&)
|
||||||
return yield if I18n.locale != :'en-US' && I18n.locale != :en
|
return yield if I18n.locale != :'en-US' && I18n.locale != :en
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ class StartFormController < ApplicationController
|
|||||||
@submitter = find_or_initialize_submitter(@template, submitter_params)
|
@submitter = find_or_initialize_submitter(@template, submitter_params)
|
||||||
|
|
||||||
if @submitter.completed_at?
|
if @submitter.completed_at?
|
||||||
redirect_to start_form_completed_path(@template.slug, submitter_params.compact_blank)
|
redirect_to start_form_completed_path(@template.slug, submitter_params.compact_blank.merge(lang:))
|
||||||
else
|
else
|
||||||
if Templates.filter_undefined_submitters(@template.submitters).size > 1 && @submitter.new_record?
|
if Templates.filter_undefined_submitters(@template.submitters).size > 1 && @submitter.new_record?
|
||||||
@error_message = multiple_submitters_error_message
|
@error_message = multiple_submitters_error_message
|
||||||
@@ -59,7 +59,7 @@ class StartFormController < ApplicationController
|
|||||||
|
|
||||||
Submitters::StartForm.assign_start_form_cookie(@submitter, request)
|
Submitters::StartForm.assign_start_form_cookie(@submitter, request)
|
||||||
|
|
||||||
redirect_to submit_form_path(@submitter.slug)
|
redirect_to submit_form_path(@submitter.slug, lang:)
|
||||||
else
|
else
|
||||||
render :show, status: :unprocessable_content
|
render :show, status: :unprocessable_content
|
||||||
end
|
end
|
||||||
@@ -150,7 +150,7 @@ class StartFormController < ApplicationController
|
|||||||
return render :show, status: :unprocessable_content if submitter.errors.present?
|
return render :show, status: :unprocessable_content if submitter.errors.present?
|
||||||
|
|
||||||
if Submitters::StartForm.verify_2fa_and_save_submitter(submitter, request, is_new_record: submitter.new_record?)
|
if Submitters::StartForm.verify_2fa_and_save_submitter(submitter, request, is_new_record: submitter.new_record?)
|
||||||
redirect_to submit_form_path(submitter.slug)
|
redirect_to submit_form_path(submitter.slug, lang:)
|
||||||
else
|
else
|
||||||
if defined?(Rollbar) && template.preferences['shared_link_2fa'] != true
|
if defined?(Rollbar) && template.preferences['shared_link_2fa'] != true
|
||||||
Rollbar.info("2FA link requested: #{submitter.id}")
|
Rollbar.info("2FA link requested: #{submitter.id}")
|
||||||
@@ -167,10 +167,10 @@ class StartFormController < ApplicationController
|
|||||||
|
|
||||||
render :error, status: :unprocessable_content
|
render :error, status: :unprocessable_content
|
||||||
rescue Submitters::UnableToSendCode, Submitters::InvalidOtp => e
|
rescue Submitters::UnableToSendCode, Submitters::InvalidOtp => e
|
||||||
redirect_to start_form_path(template.slug, params: submitter_params.merge(email_verification: true)),
|
redirect_to start_form_path(template.slug, lang:, params: submitter_params.merge(email_verification: true)),
|
||||||
alert: e.message
|
alert: e.message
|
||||||
rescue RateLimit::LimitApproached
|
rescue RateLimit::LimitApproached
|
||||||
redirect_to start_form_path(template.slug, params: submitter_params.merge(email_verification: true)),
|
redirect_to start_form_path(template.slug, lang:, params: submitter_params.merge(email_verification: true)),
|
||||||
alert: I18n.t(:too_many_attempts)
|
alert: I18n.t(:too_many_attempts)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -16,21 +16,21 @@ class StartFormEmail2faSendController < ApplicationController
|
|||||||
.submitters.new(**submitter_params, account_id: @template.account_id)
|
.submitters.new(**submitter_params, account_id: @template.account_id)
|
||||||
|
|
||||||
if @submitter.email.blank?
|
if @submitter.email.blank?
|
||||||
return redirect_to start_form_path(@template.slug), alert: I18n.t(:provide_your_email_to_start)
|
return redirect_to start_form_path(@template.slug, lang:), alert: I18n.t(:provide_your_email_to_start)
|
||||||
end
|
end
|
||||||
|
|
||||||
Submitters.send_shared_link_email_verification_code(@submitter, request:)
|
Submitters.send_shared_link_email_verification_code(@submitter, request:)
|
||||||
|
|
||||||
redir_params = { notice: I18n.t(:code_has_been_resent) } if params[:resend]
|
redir_params = { notice: I18n.t(:code_has_been_resent) } if params[:resend]
|
||||||
|
|
||||||
redirect_to start_form_path(@template.slug, params: submitter_params.merge(email_verification: true)),
|
redirect_to start_form_path(@template.slug, lang:, params: submitter_params.merge(email_verification: true)),
|
||||||
**redir_params
|
**redir_params
|
||||||
rescue Submitters::BouncedEmail => e
|
rescue Submitters::BouncedEmail => e
|
||||||
@error_message = e.message
|
@error_message = e.message
|
||||||
|
|
||||||
render 'start_form/error', status: :unprocessable_content
|
render 'start_form/error', status: :unprocessable_content
|
||||||
rescue Submitters::UnableToSendCode => e
|
rescue Submitters::UnableToSendCode => e
|
||||||
redirect_to start_form_path(@template.slug, params: submitter_params.merge(email_verification: true)),
|
redirect_to start_form_path(@template.slug, lang:, params: submitter_params.merge(email_verification: true)),
|
||||||
alert: e.message
|
alert: e.message
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ class SubmitFormController < ApplicationController
|
|||||||
return render :email_2fa unless Submitters::AuthorizedForForm.pass_email_2fa?(@submitter, request)
|
return render :email_2fa unless Submitters::AuthorizedForForm.pass_email_2fa?(@submitter, request)
|
||||||
|
|
||||||
if @submitter.completed_at? || submission.completed_at?
|
if @submitter.completed_at? || submission.completed_at?
|
||||||
return redirect_to submit_form_completed_path(@submitter.slug)
|
return redirect_to submit_form_completed_path(@submitter.slug, lang:)
|
||||||
end
|
end
|
||||||
|
|
||||||
@form_configs = Submitters::FormConfigs.call(@submitter, CONFIG_KEYS)
|
@form_configs = Submitters::FormConfigs.call(@submitter, CONFIG_KEYS)
|
||||||
@@ -96,7 +96,7 @@ class SubmitFormController < ApplicationController
|
|||||||
|
|
||||||
return if Submitters::AuthorizedForForm.call(@submitter, current_user, request)
|
return if Submitters::AuthorizedForForm.call(@submitter, current_user, request)
|
||||||
|
|
||||||
redirect_to submit_form_path(params[:submit_form_slug])
|
redirect_to submit_form_path(params[:submit_form_slug], lang:)
|
||||||
end
|
end
|
||||||
|
|
||||||
def success; end
|
def success; end
|
||||||
@@ -114,7 +114,7 @@ class SubmitFormController < ApplicationController
|
|||||||
def maybe_require_link_2fa
|
def maybe_require_link_2fa
|
||||||
return if Submitters::AuthorizedForForm.pass_link_2fa?(@submitter, current_user, request)
|
return if Submitters::AuthorizedForForm.pass_link_2fa?(@submitter, current_user, request)
|
||||||
|
|
||||||
redirect_to start_form_path(@submitter.submission.template.slug)
|
redirect_to start_form_path(@submitter.submission.template.slug, lang:)
|
||||||
end
|
end
|
||||||
|
|
||||||
def maybe_render_locked_page
|
def maybe_render_locked_page
|
||||||
|
|||||||
@@ -20,17 +20,17 @@ class SubmitFormEmail2fasController < ApplicationController
|
|||||||
{ value: @submitter.slug, expires: Submitters::StartForm::COOKIES_TTL.from_now,
|
{ value: @submitter.slug, expires: Submitters::StartForm::COOKIES_TTL.from_now,
|
||||||
**Submitters::StartForm::COOKIES_DEFAULTS }
|
**Submitters::StartForm::COOKIES_DEFAULTS }
|
||||||
|
|
||||||
redirect_to submit_form_path(@submitter.slug)
|
redirect_to submit_form_path(@submitter.slug, lang:)
|
||||||
else
|
else
|
||||||
redirect_to submit_form_path(@submitter.slug, status: :error), alert: I18n.t(:invalid_code)
|
redirect_to submit_form_path(@submitter.slug, status: :error, lang:), alert: I18n.t(:invalid_code)
|
||||||
end
|
end
|
||||||
rescue RateLimit::LimitApproached
|
rescue RateLimit::LimitApproached
|
||||||
redirect_to submit_form_path(@submitter.slug, status: :error), alert: I18n.t(:too_many_attempts)
|
redirect_to submit_form_path(@submitter.slug, status: :error, lang:), alert: I18n.t(:too_many_attempts)
|
||||||
end
|
end
|
||||||
|
|
||||||
def update
|
def update
|
||||||
if @submitter.submission_events.where(event_type: 'send_2fa_email').exists?(created_at: 15.seconds.ago..)
|
if @submitter.submission_events.where(event_type: 'send_2fa_email').exists?(created_at: 15.seconds.ago..)
|
||||||
return redirect_to submit_form_path(@submitter.slug, status: :error), alert: I18n.t(:rate_limit_exceeded)
|
return redirect_to submit_form_path(@submitter.slug, status: :error, lang:), alert: I18n.t(:rate_limit_exceeded)
|
||||||
end
|
end
|
||||||
|
|
||||||
RateLimit.call("send-email-code-#{@submitter.id}", limit: 2, ttl: 45.seconds, enabled: true)
|
RateLimit.call("send-email-code-#{@submitter.id}", limit: 2, ttl: 45.seconds, enabled: true)
|
||||||
@@ -38,16 +38,17 @@ class SubmitFormEmail2fasController < ApplicationController
|
|||||||
if Docuseal.multitenant? && Submitters.email_bounced_recently?(@submitter.email)
|
if Docuseal.multitenant? && Submitters.email_bounced_recently?(@submitter.email)
|
||||||
Rollbar.warning("Bounced OTP email for submitter: #{@submitter.id}") if defined?(Rollbar)
|
Rollbar.warning("Bounced OTP email for submitter: #{@submitter.id}") if defined?(Rollbar)
|
||||||
|
|
||||||
return redirect_to submit_form_path(@submitter.slug, status: :error), alert: I18n.t(:verification_email_bounced)
|
return redirect_to submit_form_path(@submitter.slug, status: :error, lang:),
|
||||||
|
alert: I18n.t(:verification_email_bounced)
|
||||||
end
|
end
|
||||||
|
|
||||||
SendSubmitterVerificationEmailJob.perform_async('submitter_id' => @submitter.id, 'locale' => I18n.locale.to_s)
|
SendSubmitterVerificationEmailJob.perform_async('submitter_id' => @submitter.id, 'locale' => I18n.locale.to_s)
|
||||||
|
|
||||||
redir_params = params[:resend] ? { alert: I18n.t(:code_has_been_resent) } : {}
|
redir_params = params[:resend] ? { alert: I18n.t(:code_has_been_resent) } : {}
|
||||||
|
|
||||||
redirect_to submit_form_path(@submitter.slug, status: :sent), **redir_params
|
redirect_to submit_form_path(@submitter.slug, status: :sent, lang:), **redir_params
|
||||||
rescue RateLimit::LimitApproached
|
rescue RateLimit::LimitApproached
|
||||||
redirect_to submit_form_path(@submitter.slug, status: :error), alert: I18n.t(:too_many_attempts)
|
redirect_to submit_form_path(@submitter.slug, status: :error, lang:), alert: I18n.t(:too_many_attempts)
|
||||||
end
|
end
|
||||||
|
|
||||||
def load_submitter
|
def load_submitter
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<%= t('we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue') %>
|
<%= t('we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue') %>
|
||||||
</div>
|
</div>
|
||||||
<%= form_for '', url: @resubmit_submitter ? resubmit_form_path : start_form_path(@template.slug), method: :put, html: { class: 'space-y-4', id: 'code_form' } do |f| %>
|
<%= form_for '', url: @resubmit_submitter ? resubmit_form_path : start_form_path(@template.slug, lang: params[:lang].presence), method: :put, html: { class: 'space-y-4', id: 'code_form' } do |f| %>
|
||||||
<div dir="auto" class="form-control !mt-0">
|
<div dir="auto" class="form-control !mt-0">
|
||||||
<%= f.hidden_field 'resubmit', value: params[:resubmit] %>
|
<%= f.hidden_field 'resubmit', value: params[:resubmit] %>
|
||||||
<%= f.hidden_field 'submitter[name]', value: params[:name] || params.dig(:submitter, :name) %>
|
<%= f.hidden_field 'submitter[name]', value: params[:name] || params.dig(:submitter, :name) %>
|
||||||
@@ -52,7 +52,7 @@
|
|||||||
<% if @resubmit_submitter %>
|
<% if @resubmit_submitter %>
|
||||||
<%= button_to t(:re_send_email), resubmit_form_path, params: { resubmit: @resubmit_submitter.slug }, method: :put, id: 'resend_code', class: 'hidden' %>
|
<%= button_to t(:re_send_email), resubmit_form_path, params: { resubmit: @resubmit_submitter.slug }, method: :put, id: 'resend_code', class: 'hidden' %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= button_to t(:re_send_email), start_form_email_2fa_send_index_path, params: { slug: @template.slug, resend: true, submitter: { name: params[:name] || params.dig(:submitter, :name), email: params[:email] || params.dig(:submitter, :email), phone: params[:phone] || params.dig(:submitter, :phone) } }.compact, method: :post, id: 'resend_code', class: 'hidden' %>
|
<%= button_to t(:re_send_email), start_form_email_2fa_send_index_path, params: { slug: @template.slug, resend: true, submitter: { name: params[:name] || params.dig(:submitter, :name), email: params[:email] || params.dig(:submitter, :email), phone: params[:phone] || params.dig(:submitter, :phone) }, lang: params[:lang] }.compact, method: :post, id: 'resend_code', class: 'hidden' %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% if !@template.archived_at? && !@template.account.archived_at? %>
|
<% if !@template.archived_at? && !@template.account.archived_at? %>
|
||||||
<%= form_for @submitter, url: @resubmit_submitter ? resubmit_form_path : start_form_path(@template.slug), data: { turbo_frame: :_top }, method: :put, html: { class: 'space-y-4' } do |f| %>
|
<%= form_for @submitter, url: @resubmit_submitter ? resubmit_form_path : start_form_path(@template.slug, lang: params[:lang].presence), data: { turbo_frame: :_top }, method: :put, html: { class: 'space-y-4' } do |f| %>
|
||||||
<%= hidden_field_tag :resubmit, @resubmit_submitter.slug if @resubmit_submitter %>
|
<%= hidden_field_tag :resubmit, @resubmit_submitter.slug if @resubmit_submitter %>
|
||||||
<% if @error_message %>
|
<% if @error_message %>
|
||||||
<div class="alert items-start bg-base-100 border border-red-400 text-red-400">
|
<div class="alert items-start bg-base-100 border border-red-400 text-red-400">
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
<%= form_for '', url: submit_form_email_2fa_path, method: :post, html: { class: 'space-y-4', id: 'code_form' } do |f| %>
|
<%= form_for '', url: submit_form_email_2fa_path, method: :post, html: { class: 'space-y-4', id: 'code_form' } do |f| %>
|
||||||
<div dir="auto" class="form-control !mt-0">
|
<div dir="auto" class="form-control !mt-0">
|
||||||
<%= f.hidden_field :submitter_slug, value: @submitter.slug %>
|
<%= f.hidden_field :submitter_slug, value: @submitter.slug %>
|
||||||
|
<%= f.hidden_field :lang, value: params[:lang] if params[:lang].present? %>
|
||||||
<%= f.text_field :one_time_code, required: true, inputmode: 'numeric', class: 'base-input text-center', placeholder: 'XXXXXX' %>
|
<%= f.text_field :one_time_code, required: true, inputmode: 'numeric', class: 'base-input text-center', placeholder: 'XXXXXX' %>
|
||||||
<div class="flex justify-between items-center mt-1">
|
<div class="flex justify-between items-center mt-1">
|
||||||
<span>
|
<span>
|
||||||
@@ -55,7 +56,7 @@
|
|||||||
<%= f.button button_title(title: t('submit')), class: 'base-button' %>
|
<%= f.button button_title(title: t('submit')), class: 'base-button' %>
|
||||||
</toggle-submit>
|
</toggle-submit>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= button_to t(:re_send_email), submit_form_email_2fa_path, params: { submitter_slug: @submitter.slug, resend: true }, method: :put, form: { id: 'resend_code_form', class: 'hidden' } %>
|
<%= button_to t(:re_send_email), submit_form_email_2fa_path, params: { submitter_slug: @submitter.slug, resend: true, lang: params[:lang] }.compact_blank, method: :put, form: { id: 'resend_code_form', class: 'hidden' } %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<% if params[:t] %>
|
<% if params[:t] %>
|
||||||
<fetch-form data-onload="true">
|
<fetch-form data-onload="true">
|
||||||
@@ -63,7 +64,7 @@
|
|||||||
</fetch-form>
|
</fetch-form>
|
||||||
<% end %>
|
<% end %>
|
||||||
<toggle-submit dir="auto" class="form-control">
|
<toggle-submit dir="auto" class="form-control">
|
||||||
<%= button_to button_title(title: t('send_verification_code')), submit_form_email_2fa_path, params: { submitter_slug: @submitter.slug }, method: :put, class: 'base-button w-full' %>
|
<%= button_to button_title(title: t('send_verification_code')), submit_form_email_2fa_path, params: { submitter_slug: @submitter.slug, lang: params[:lang] }.compact_blank, method: :put, class: 'base-button w-full' %>
|
||||||
</toggle-submit>
|
</toggle-submit>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% else %>
|
<% else %>
|
||||||
|
|||||||
Reference in new issue
Block a user