-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathbase_controller.rb
More file actions
66 lines (54 loc) · 2.08 KB
/
base_controller.rb
File metadata and controls
66 lines (54 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
module Forms
class BaseController < ApplicationController
prepend_before_action :set_form
around_action :set_locale
def redirect_to_friendly_url_start
redirect_to form_page_path(params.require(:form_id), @form.form_slug, @form.start_page)
LogEventService.log_form_start unless mode.preview?
end
rescue_from ActiveResource::ResourceNotFound, RepeatableStep::AnswerIndexError do
I18n.with_locale(locale) do
render template: "errors/not_found", status: :not_found
end
end
def error_repeat_submission
@current_context = Flow::Context.new(form: @form, store: session)
render template: "errors/repeat_submission", locals: { form: @form }
end
def set_request_logging_attributes
super
CurrentRequestLoggingAttributes.form_name = @form.name
CurrentRequestLoggingAttributes.preview = mode.preview?
# Add form-level attributes to OpenTelemetry span
TelemetryService.set_request_attributes({
"form.name" => @form.name,
"form.slug" => @form.form_slug,
"mode.type" => mode.to_s,
"mode.preview" => mode.preview?,
})
end
private
def current_context
@current_context ||= Flow::Context.new(form: @form, store: session)
end
def mode
@mode ||= Mode.new(params[:mode])
end
def default_url_options
{ mode:, locale: locale_param }
end
def set_available_languages
@available_languages = current_context.form.available_languages if current_context.form.multilingual?
end
def set_form
begin
form_id = params.require(:form_id)
@form = Api::V2::FormDocumentRepository.find_with_mode(form_id:, mode:, language: locale)
rescue ActiveResource::ResourceNotFound
archived_form = Api::V2::FormDocumentRepository.find(form_id:, tag: :archived)
return render template: "forms/archived/show", locals: { form_name: archived_form.name }, status: :not_found if archived_form.present?
end
raise ActiveResource::ResourceNotFound, "Not Found" unless @form.start_page
end
end
end