18F/identity-idp

View on GitHub
app/forms/frontend_error_form.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

class FrontendErrorForm
  include ActiveModel::Model
  include ActionView::Helpers::TranslationHelper

  validate :validate_filename_extension
  validate :validate_filename_host

  attr_reader :filename

  def submit(filename:)
    @filename = filename

    FormResponse.new(success: valid?, errors:, serialize_error_details_only: true)
  end

  private

  def validate_filename_extension
    return if File.extname(filename.to_s) == '.js'
    errors.add(:filename, :invalid_extension, message: t('errors.general'))
  end

  def validate_filename_host
    begin
      return if URI(filename.to_s).host == IdentityConfig.store.domain_name
    rescue URI::InvalidURIError; end

    errors.add(:filename, :invalid_host, message: t('errors.general'))
  end
end