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 19 end
20 20  
21 21 def finish
22   - if logged_in? && session.delete(:oauth_client_popup)
  22 + if session.delete(:oauth_client_popup)
23 23 current_user.private_token_expired? if current_user.present?
24 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 26 else
27 27 redirect_to :controller => :home
28 28 end
... ... @@ -54,7 +54,12 @@ class OauthClientPluginPublicController < PublicController
54 54 session[:return_to] = url_for(:controller => :oauth_client_plugin_public, :action => :finish)
55 55 name = auth.info.name
56 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 63 end
59 64  
60 65 end
... ...
plugins/oauth_client/views/oauth_client_plugin_public/finish.html.erb
1 1 <script>
2 2 window.addEventListener("message", function(ev) {
3 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 7 </script>
... ...