From ef9afcda40328c98744069f094244f641079af73 Mon Sep 17 00:00:00 2001 From: Gabriel Silva Date: Sun, 7 Aug 2016 23:49:55 +0000 Subject: [PATCH] Restores old plugin behavior --- plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb b/plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb index ead96eb..72a7e4d 100644 --- a/plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb +++ b/plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb @@ -4,13 +4,13 @@ class OauthClientPluginPublicController < PublicController def callback auth = request.env["omniauth.auth"] - auth_user = environment.users.where(email: auth.info.email).first oauth_params = request.env["omniauth.params"] if oauth_params && oauth_params["action"] == "external_login" - login(auth) + external_person_login(auth) else - signup(auth) + auth_user = environment.users.where(email: auth.info.email).first + if auth_user then login(auth_user.person) else signup(auth) end end end @@ -26,7 +26,7 @@ class OauthClientPluginPublicController < PublicController protected - def login auth + def external_person_login(auth) provider = OauthClientPlugin::Provider.find(session[:provider_id]) if provider.enabled? @@ -62,4 +62,17 @@ class OauthClientPluginPublicController < PublicController redirect_to :controller => :account, :action => :signup, :user => {:login => login, :email => auth.info.email}, :profile_data => {:name => name} end + def login person + provider = OauthClientPlugin::Provider.find(session[:provider_id]) + auth = person.oauth_auths.where(provider_id: provider.id).first + auth ||= person.oauth_auths.create! profile: person, provider: provider, enabled: true + if auth.enabled? && provider.enabled? + self.current_user = person.user + else + session[:notice] = _("Can't login with %s") % provider.name + end + + redirect_to :controller => :account, :action => :login + end + end -- libgit2 0.21.2