Предварительный просмотр Rails 6 ActionMailer и аутентификация http basi c - PullRequest
0 голосов
/ 30 марта 2020

У меня есть следующая конфигурация ActionMailer в production.rb:

  unless ENV['APP_NAME'] == 'application-production'
    config.action_mailer.preview_path = Rails.root.join('test/mailers/previews')
    config.action_mailer.show_previews = true
  end

Проблема в том, что непроизводственные приложения, такие как промежуточное приложение, должны иметь http-аутентификацию для всего домена, включая путь предварительного просмотра почтовой программы '/ rails / mailers', который теперь доступен без авторизации. Какая недостающая конфигурация?

РЕДАКТИРОВАТЬ: Я попытался добавить инициализатор в соответствии с этим ответом: { ссылка }. Я хотел бы использовать ActionController :: Base.http_basic_authenticate_with в инициализаторе, но он недоступен

1 Ответ

0 голосов
/ 30 марта 2020

Хорошо, я нашел способ сделать то, что мне нужно:

Я установил инициализатор: 'initializers / mailer_previews.rb' со следующим:

if Rails.application.config.action_mailer.show_previews
  Rails::MailersController.prepend_before_action do
    head :forbidden unless authenticate_or_request_with_http_basic('Plz login') do |username, password|
      username == ENV['AUTH_NAME'] && password == ENV['AUTH_PASSWORD']
    end
  end
end

Благодаря @ prcu для указания мне в правильном направлении ( см. это сообщение )

...