X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/d7d317f694b8d75aa6a3c2e5b5fee0903c7b61ed..703c1a83e6b3de91be977b62a291e12f6577dcf3:/app/controllers/user_controller.rb diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 73115dc52..443c433a5 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -143,55 +143,24 @@ class UserController < ApplicationController @tokens = @user.oauth_tokens.authorized if params[:user] and params[:user][:display_name] and params[:user][:description] - @user.display_name = params[:user][:display_name] - @user.new_email = params[:user][:new_email] - - if params[:user][:pass_crypt].length > 0 or params[:user][:pass_crypt_confirmation].length > 0 - @user.pass_crypt = params[:user][:pass_crypt] - @user.pass_crypt_confirmation = params[:user][:pass_crypt_confirmation] - end - - if params[:user][:description] != @user.description - @user.description = params[:user][:description] - @user.description_format = "markdown" - end - - @user.languages = params[:user][:languages].split(",") - - case params[:image_action] - when "new" then @user.image = params[:user][:image] - when "delete" then @user.image = nil - end - - @user.home_lat = params[:user][:home_lat] - @user.home_lon = params[:user][:home_lon] - - if params[:user][:preferred_editor] == "default" - @user.preferred_editor = nil - else - @user.preferred_editor = params[:user][:preferred_editor] - end - - @user.openid_url = nil if params[:user][:openid_url].blank? - if params[:user][:openid_url] and params[:user][:openid_url].length > 0 and params[:user][:openid_url] != @user.openid_url # If the OpenID has changed, we want to check that it is a # valid OpenID and one the user has control over before saving # it as a password equivalent for the user. - session[:new_user] = @user + session[:new_user_settings] = params openid_verify(params[:user][:openid_url], @user) else - update_user(@user) + update_user(@user, params) end elsif using_open_id? # The redirect from the OpenID provider reenters here # again and we need to pass the parameters through to # the open_id_authentication function - @user = session.delete(:new_user) + settings = session.delete(:new_user_settings) openid_verify(nil, @user) do |user| - update_user(user) + update_user(user, settings) end end end @@ -548,7 +517,7 @@ private if user = User.find_by_openid_url(identity_url) case user.status when "pending" then - failed_login t('user.login.account not active') + failed_login t('user.login.account not active', :reconfirm => url_for(:action => 'confirm_resend', :display_name => user.display_name)) when "active", "confirmed" then successful_login(user) when "suspended" then @@ -565,8 +534,8 @@ private # to the create account page with username and email filled # in if they have been given by the OpenID provider through # the simple registration protocol. - nickname = sreg["nickname"] || ax["http://axschema.org/namePerson/friendly"] - email = sreg["email"] || ax["http://axschema.org/contact/email"] + nickname = sreg["nickname"] || ax["http://axschema.org/namePerson/friendly"].first + email = sreg["email"] || ax["http://axschema.org/contact/email"].first redirect_to :controller => 'user', :action => 'new', :nickname => nickname, :email => email, :openid => identity_url end elsif result.missing? @@ -662,7 +631,38 @@ private ## # update a user's details - def update_user(user) + def update_user(user, params) + user.display_name = params[:user][:display_name] + user.new_email = params[:user][:new_email] + + if params[:user][:pass_crypt].length > 0 or params[:user][:pass_crypt_confirmation].length > 0 + user.pass_crypt = params[:user][:pass_crypt] + user.pass_crypt_confirmation = params[:user][:pass_crypt_confirmation] + end + + if params[:user][:description] != user.description + user.description = params[:user][:description] + user.description_format = "markdown" + end + + user.languages = params[:user][:languages].split(",") + + case params[:image_action] + when "new" then user.image = params[:user][:image] + when "delete" then user.image = nil + end + + user.home_lat = params[:user][:home_lat] + user.home_lon = params[:user][:home_lon] + + if params[:user][:preferred_editor] == "default" + user.preferred_editor = nil + else + user.preferred_editor = params[:user][:preferred_editor] + end + + user.openid_url = nil if params[:user][:openid_url].blank? + if user.save set_locale