Commit ef9afcda40328c98744069f094244f641079af73

Authored by Gabriel Silva
1 parent 2a6a945e

Restores old plugin behavior

Signed-off-by: Gabriel Silva <gabriel93.silva@gmail.com>
plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb
@@ -4,13 +4,13 @@ class OauthClientPluginPublicController &lt; PublicController @@ -4,13 +4,13 @@ class OauthClientPluginPublicController &lt; PublicController
4 4
5 def callback 5 def callback
6 auth = request.env["omniauth.auth"] 6 auth = request.env["omniauth.auth"]
7 - auth_user = environment.users.where(email: auth.info.email).first  
8 7
9 oauth_params = request.env["omniauth.params"] 8 oauth_params = request.env["omniauth.params"]
10 if oauth_params && oauth_params["action"] == "external_login" 9 if oauth_params && oauth_params["action"] == "external_login"
11 - login(auth) 10 + external_person_login(auth)
12 else 11 else
13 - signup(auth) 12 + auth_user = environment.users.where(email: auth.info.email).first
  13 + if auth_user then login(auth_user.person) else signup(auth) end
14 end 14 end
15 end 15 end
16 16
@@ -26,7 +26,7 @@ class OauthClientPluginPublicController &lt; PublicController @@ -26,7 +26,7 @@ class OauthClientPluginPublicController &lt; PublicController
26 26
27 protected 27 protected
28 28
29 - def login auth 29 + def external_person_login(auth)
30 provider = OauthClientPlugin::Provider.find(session[:provider_id]) 30 provider = OauthClientPlugin::Provider.find(session[:provider_id])
31 31
32 if provider.enabled? 32 if provider.enabled?
@@ -62,4 +62,17 @@ class OauthClientPluginPublicController &lt; PublicController @@ -62,4 +62,17 @@ class OauthClientPluginPublicController &lt; PublicController
62 redirect_to :controller => :account, :action => :signup, :user => {:login => login, :email => auth.info.email}, :profile_data => {:name => name} 62 redirect_to :controller => :account, :action => :signup, :user => {:login => login, :email => auth.info.email}, :profile_data => {:name => name}
63 end 63 end
64 64
  65 + def login person
  66 + provider = OauthClientPlugin::Provider.find(session[:provider_id])
  67 + auth = person.oauth_auths.where(provider_id: provider.id).first
  68 + auth ||= person.oauth_auths.create! profile: person, provider: provider, enabled: true
  69 + if auth.enabled? && provider.enabled?
  70 + self.current_user = person.user
  71 + else
  72 + session[:notice] = _("Can't login with %s") % provider.name
  73 + end
  74 +
  75 + redirect_to :controller => :account, :action => :login
  76 + end
  77 +
65 end 78 end