]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/concerns/session_methods.rb
Merge remote-tracking branch 'upstream/pull/4683'
[rails.git] / app / controllers / concerns / session_methods.rb
index dd6458b1b9359aa42ed4b5bce4cc6a5df0b9a269..cebe932fc9862fae21c1cfdb13d93ffa82b4cd46 100644 (file)
@@ -8,7 +8,7 @@ module SessionMethods
   def auth_url(provider, uid, referer = nil)
     params = { :provider => provider }
 
-    params[:openid_url] = openid_expand_url(uid) if provider == "openid"
+    params[:openid_url] = uid if provider == "openid"
 
     if referer.nil?
       params[:origin] = request.path
@@ -20,23 +20,6 @@ module SessionMethods
     auth_path(params)
   end
 
-  ##
-  # special case some common OpenID providers by applying heuristics to
-  # try and come up with the correct URL based on what the user entered
-  def openid_expand_url(openid_url)
-    if openid_url.nil?
-      nil
-    elsif openid_url.match(%r{(.*)gmail.com(/?)$}) || openid_url.match(%r{(.*)googlemail.com(/?)$})
-      # Special case gmail.com as it is potentially a popular OpenID
-      # provider and, unlike yahoo.com, where it works automatically, Google
-      # have hidden their OpenID endpoint somewhere obscure this making it
-      # somewhat less user friendly.
-      "https://www.google.com/accounts/o8/id"
-    else
-      openid_url
-    end
-  end
-
   ##
   # process a successful login
   def successful_login(user, referer = nil)
@@ -69,7 +52,7 @@ module SessionMethods
   def failed_login(message, username = nil)
     flash[:error] = message
 
-    redirect_to :action => "new", :referer => session[:referer],
+    redirect_to :controller => "sessions", :action => "new", :referer => session[:referer],
                 :username => username, :remember_me => session[:remember_me]
 
     session.delete(:remember_me)
@@ -79,9 +62,10 @@ module SessionMethods
   ##
   #
   def unconfirmed_login(user)
-    session[:token] = user.tokens.create.token
+    session[:pending_user] = user.id
 
-    redirect_to :controller => "confirmations", :action => "confirm", :display_name => user.display_name
+    redirect_to :controller => "confirmations", :action => "confirm",
+                :display_name => user.display_name, :referer => session[:referer]
 
     session.delete(:remember_me)
     session.delete(:referer)