Commit 7b3a498885b05eec7419e05e3fb81f935bb0f53d

Authored by Victor Costa
1 parent a892005a

oauth_client: improve login with popup

plugins/oauth_client/controllers/public/oauth_client_plugin_public_controller.rb
@@ -19,10 +19,10 @@ class OauthClientPluginPublicController < PublicController @@ -19,10 +19,10 @@ class OauthClientPluginPublicController < PublicController
19 end 19 end
20 20
21 def finish 21 def finish
22 - if logged_in? && session.delete(:oauth_client_popup) 22 + if session.delete(:oauth_client_popup)
23 current_user.private_token_expired? if current_user.present? 23 current_user.private_token_expired? if current_user.present?
24 private_token = current_user.present? ? current_user.private_token : '' 24 private_token = current_user.present? ? current_user.private_token : ''
25 - render 'oauth_client_plugin_public/finish', :locals => {:private_token => private_token} 25 + render 'oauth_client_plugin_public/finish', :locals => {:private_token => private_token, :user => params[:user]}, :layout => false
26 else 26 else
27 redirect_to :controller => :home 27 redirect_to :controller => :home
28 end 28 end
@@ -54,7 +54,12 @@ class OauthClientPluginPublicController < PublicController @@ -54,7 +54,12 @@ class OauthClientPluginPublicController < PublicController
54 session[:return_to] = url_for(:controller => :oauth_client_plugin_public, :action => :finish) 54 session[:return_to] = url_for(:controller => :oauth_client_plugin_public, :action => :finish)
55 name = auth.info.name 55 name = auth.info.name
56 name ||= auth.extra && auth.extra.raw_info ? auth.extra.raw_info.name : '' 56 name ||= auth.extra && auth.extra.raw_info ? auth.extra.raw_info.name : ''
57 - redirect_to :controller => :account, :action => :signup, :user => {:login => login, :email => auth.info.email}, :profile_data => {:name => name} 57 +
  58 + if session[:oauth_client_popup]
  59 + redirect_to :controller => :oauth_client_plugin_public, :action => :finish, :user => {:login => login, :email => auth.info.email}, :profile_data => {:name => name}
  60 + else
  61 + redirect_to :controller => :account, :action => :signup, :user => {:login => login, :email => auth.info.email}, :profile_data => {:name => name}
  62 + end
58 end 63 end
59 64
60 end 65 end
plugins/oauth_client/views/oauth_client_plugin_public/finish.html.erb
1 <script> 1 <script>
2 window.addEventListener("message", function(ev) { 2 window.addEventListener("message", function(ev) {
3 if (ev.data.message === "requestOauthClientPluginResult") { 3 if (ev.data.message === "requestOauthClientPluginResult") {
4 - ev.source.postMessage({ message: "oauthClientPluginResult", logged_in: <%= logged_in? %>, private_token: '<%= private_token %>' }, "*"); 4 + ev.source.postMessage({ message: "oauthClientPluginResult", logged_in: <%= logged_in? %>, private_token: '<%= private_token %>', user: <%= user.to_json %> }, "*");
5 } 5 }
6 }); 6 });
7 </script> 7 </script>