2015-02-11 4 views
1

Я пытаюсь настроить Omniauth и Devise с помощью стратегий Stripe и LinkedIn на моей платформе SaaS.Несколько значений для OmniAuth.config.full_host

В рамках платформы каждый клиент может иметь свой собственный уникальный домен.

Я могу заставить LinkedIn работать на моих клиентских сайтах, но Stripe требует, чтобы вы указали все возможности URL-адреса обратного вызова в своем интерфейсе администратора. Чтобы обойти это, я установил www.myapp.com в качестве URL-адреса обратного вызова через OmniAuth.config.full_host, но это означает, что у меня есть статический URL-адрес обратного вызова, а затем передайте его идентификатор клиента через параметр state.

Это работает для Stripe, но затем LinkedIn начинает сбой, поскольку домен обратного вызова больше не соответствует исходному запросу.

Есть ли способ установить OmniAuth.config.full_host только для определенных стратегий (т. Е. Только для полосы)?

ответ

1

конфигурации/Инициализаторы/omniauth.rb

OmniAuth.config.full_host = lambda do |env| 
    if env['omniauth.strategy'].is_a?(OmniAuth::Strategies::Stripe) 
    #return url for stripe 
    else 
    #return url for others 
    end 
end 
0

Другим вариантом может быть, чтобы переопределить OmniAuth::Stragies::Stripe#callback_url.

#config/initializers/stripe.rb 
module OmniAuth 
    module Strategies 
    class Stripe 
     def full_host 
     #return url for stripe 
     end 
    end 
    end 
end 

оригинальный OmniAuth::Strategy#full_host метод будет использоваться для других стратегий.

Смежные вопросы