mirror of https://github.com/docusealco/docuseal
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
988 B
34 lines
988 B
# frozen_string_literal: true
|
|
|
|
module PrefillFieldsHelper
|
|
def extract_ats_prefill_fields
|
|
return [] if params[:ats_fields].blank?
|
|
|
|
begin
|
|
decoded_json = Base64.urlsafe_decode64(params[:ats_fields])
|
|
field_names = JSON.parse(decoded_json)
|
|
|
|
# Validate that we got an array of strings
|
|
return [] unless field_names.is_a?(Array) && field_names.all?(String)
|
|
|
|
# Filter to only expected field name patterns
|
|
valid_fields = field_names.select { |name| valid_ats_field_name?(name) }
|
|
|
|
# Log successful field reception
|
|
Rails.logger.info "Received #{valid_fields.length} ATS prefill fields: #{valid_fields.join(', ')}"
|
|
|
|
valid_fields
|
|
rescue StandardError => e
|
|
Rails.logger.warn "Failed to parse ATS prefill fields: #{e.message}"
|
|
[]
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def valid_ats_field_name?(name)
|
|
# Only allow expected field name patterns (security)
|
|
name.match?(/\A(employee|manager|account|location)_[a-z_]+\z/)
|
|
end
|
|
end
|