X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/5d3ecffa28510c867665001a7615559a185869c6..13c2ac5cdb7e5beddf80b90b0357b9961e12033f:/app/controllers/user_controller.rb diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 6dd3afb05..c8abb4d85 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -131,6 +131,10 @@ class UserController < ApplicationController session[:new_user_settings] = params redirect_to auth_url(params[:user][:auth_provider], params[:user][:auth_uid]) end + elsif errors = session.delete(:user_errors) + errors.each do |attribute, error| + @user.errors.add(attribute, error) + end end end @@ -182,7 +186,7 @@ class UserController < ApplicationController if @user.save token.destroy flash[:notice] = t "user.reset_password.flash changed" - redirect_to :action => "login" + successful_login(@user) end end else @@ -330,7 +334,7 @@ class UserController < ApplicationController flash[:error] = t "user.confirm_resend.failure", :name => params[:display_name] else Notifier.signup_confirm(user, user.tokens.create).deliver_now - flash[:notice] = t("user.confirm_resend.success", :email => user.email).html_safe + flash[:notice] = t("user.confirm_resend.success", :email => user.email, :sender => SUPPORT_EMAIL).html_safe end redirect_to :action => "login" @@ -501,31 +505,14 @@ class UserController < ApplicationController email_verified = false end - user = User.find_by_auth_provider_and_auth_uid(provider, uid) - - if user.nil? && provider == "google" - openid_url = auth_info[:extra][:id_info]["openid_id"] - user = User.find_by_auth_provider_and_auth_uid("openid", openid_url) if openid_url - user.update(:auth_provider => provider, :auth_uid => uid) if user - end - - if user - case user.status - when "pending" then - unconfirmed_login(user) - when "active", "confirmed" then - successful_login(user, env["omniauth.params"]["referer"]) - when "suspended" then - failed_login t("user.login.account is suspended", :webmaster => "mailto:webmaster@openstreetmap.org") - else - failed_login t("user.login.auth failure") - end - elsif settings = session.delete(:new_user_settings) + if settings = session.delete(:new_user_settings) @user.auth_provider = provider @user.auth_uid = uid update_user(@user, settings) + session[:user_errors] = @user.errors.as_json + redirect_to :action => "account", :display_name => @user.display_name elsif session[:new_user] session[:new_user].auth_provider = provider @@ -537,8 +524,29 @@ class UserController < ApplicationController redirect_to :action => "terms" else - redirect_to :action => "new", :nickname => name, :email => email, - :auth_provider => provider, :auth_uid => uid + user = User.find_by_auth_provider_and_auth_uid(provider, uid) + + if user.nil? && provider == "google" + openid_url = auth_info[:extra][:id_info]["openid_id"] + user = User.find_by_auth_provider_and_auth_uid("openid", openid_url) if openid_url + user.update(:auth_provider => provider, :auth_uid => uid) if user + end + + if user + case user.status + when "pending" then + unconfirmed_login(user) + when "active", "confirmed" then + successful_login(user, env["omniauth.params"]["referer"]) + when "suspended" then + failed_login t("user.login.account is suspended", :webmaster => "mailto:#{SUPPORT_EMAIL}") + else + failed_login t("user.login.auth failure") + end + else + redirect_to :action => "new", :nickname => name, :email => email, + :auth_provider => provider, :auth_uid => uid + end end end @@ -559,9 +567,9 @@ class UserController < ApplicationController elsif user = User.authenticate(:username => username, :password => password, :pending => true) unconfirmed_login(user) elsif User.authenticate(:username => username, :password => password, :suspended => true) - failed_login t("user.login.account is suspended", :webmaster => "mailto:webmaster@openstreetmap.org") + failed_login t("user.login.account is suspended", :webmaster => "mailto:#{SUPPORT_EMAIL}"), username else - failed_login t("user.login.auth failure") + failed_login t("user.login.auth failure"), username end end @@ -627,10 +635,11 @@ class UserController < ApplicationController ## # process a failed login - def failed_login(message) + def failed_login(message, username = nil) flash[:error] = message - redirect_to :action => "login", :referer => session[:referer] + redirect_to :action => "login", :referer => session[:referer], + :username => username, :remember_me => session[:remember_me] session.delete(:remember_me) session.delete(:referer)