Hier ist die Situation. Ich habe eine Multi-Tenant Rails App, die das Apartment Juwel nutzt, wo ich eine LinkedIn OmniAuth Strategie implementieren muss.OmniAuth mit einer Multi-Tenant Rails 5 App entwickeln
Wie Sie auf meinen Routen sehen können, bleiben die Benutzer von Devise und die zugehörigen Routen nur für die einzelnen Schemas der Subdomänen erhalten.
Beispiel Route:
Gute: https://frank.example.io/users/sign_in
Bad: https://example.io/users/sign_in
Routen
class SubdomainPresent
def self.matches?(request)
request.subdomain.present?
end
end
class SubdomainBlank
def self.matches?(request)
request.subdomain.blank?
end
end
Rails.application.routes.draw do
constraints(SubdomainPresent) do
...
devise_for :users, controllers: {
omniauth_callbacks: 'omniauth_callbacks'
}
devise_scope :user do
get '/users/:id', to: 'users/registrations#show', as: "show_user"
end
...
end
end
Mein spezifisches Problem ist, dass LinkedIn Platzhalter mit ihrem Rückruf nicht unterstützt U RLs, so dass ich nicht weiß, wie ich Benutzer nach der OAuth-Authentifizierung in die richtige Domäne leiten kann.
Sie müssten eine Controlleraktion hinzufügen, mit der Sie den Benutzer auf die entsprechende Benutzerseite umleiten. Ich schätze, die LinkedIn API gibt eine Art 'user_id' zurück? Hier müssen Sie anfangen. – CottonEyeJoe
Leider wegen der Schemas, die möglicherweise nicht möglich sind. Wenn ich Schemata 'A' und' B' hätte, könnte jeder einen Benutzer mit 'user.id == 1' haben. – Will