X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/12c1d5e6c05813a0697724277b4d8529a1a7c240..8551db4c82df7458632d4aa30e9344d60e0774dc:/app/controllers/concerns/user_methods.rb?ds=sidebyside diff --git a/app/controllers/concerns/user_methods.rb b/app/controllers/concerns/user_methods.rb index 81e9f0064..d79ed48d2 100644 --- a/app/controllers/concerns/user_methods.rb +++ b/app/controllers/concerns/user_methods.rb @@ -3,6 +3,27 @@ module UserMethods private + ## + # ensure that there is a "user" instance variable + def lookup_user + display_name = params[:display_name] || params[:user_display_name] + @user = User.active.find_by!(:display_name => display_name) + rescue ActiveRecord::RecordNotFound + render_unknown_user display_name + end + + ## + # render a "no such user" page + def render_unknown_user(name) + @title = t "users.no_such_user.title" + @not_found_user = name + + respond_to do |format| + format.html { render :template => "users/no_such_user", :status => :not_found, :layout => "site" } + format.all { head :not_found } + end + end + ## # update a user's details def update_user(user, params) @@ -25,13 +46,15 @@ module UserMethods if user.new_email.blank? || user.new_email == user.email flash[:notice] = t "accounts.update.success" else + token = user.generate_token_for(:new_email) + user.email = user.new_email if user.valid? flash[:notice] = t "accounts.update.success_confirm_needed" begin - UserMailer.email_confirm(user, user.tokens.create).deliver_later + UserMailer.email_confirm(user, token).deliver_later rescue StandardError # Ignore errors sending email end