X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/f8367c3ee1418548b5397b6a21f287c2407963e1..967f44ffac7dfbbc91dabd8dc221be22e4ba0606:/app/controllers/user_controller.rb diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index 35b88b65a..2bb4eb577 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -17,9 +17,8 @@ class UserController < ApplicationController @user.description = "" if @user.description.nil? if @user.save - token = @user.tokens.create flash[:notice] = "User was successfully created. Check your email for a confirmation note, and you\'ll be mapping in no time :-)
Please note that you won't be able to login until you've received and confirmed your email address." - Notifier::deliver_signup_confirm(@user, token) + Notifier.deliver_signup_confirm(@user, @user.tokens.create) redirect_to :action => 'login' else render :action => 'new' @@ -29,21 +28,28 @@ class UserController < ApplicationController def account @title = 'edit account' if params[:user] and params[:user][:display_name] and params[:user][:description] - home_lat = params[:user][:home_lat] - home_lon = params[:user][:home_lon] + if params[:user][:email] != @user.email + @user.new_email = params[:user][:email] + end @user.display_name = params[:user][:display_name] + 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 + @user.description = params[:user][:description] - @user.home_lat = home_lat - @user.home_lon = home_lon + @user.home_lat = params[:user][:home_lat] + @user.home_lon = params[:user][:home_lon] + if @user.save - flash[:notice] = "User information updated successfully." - else - flash.delete(:notice) + if params[:user][:email] == @user.new_email + @notice = "User information updated successfully. Check your email for a note to confirm your new email address." + Notifier.deliver_email_confirm(@user, @user.tokens.create) + else + @notice = "User information updated successfully." + end end end end @@ -72,13 +78,11 @@ class UserController < ApplicationController user = User.find_by_email(params[:user][:email]) if user token = user.tokens.create - Notifier::deliver_lost_password(user, token) - flash[:notice] = "Sorry you lost it :-( but an email is on its way so you can reset it soon." + Notifier.deliver_lost_password(user, token) + @notice = "Sorry you lost it :-( but an email is on its way so you can reset it soon." else - flash[:notice] = "Couldn't find that email address, sorry." + @notice = "Couldn't find that email address, sorry." end - else - render :action => 'lost_password' end end @@ -95,12 +99,13 @@ class UserController < ApplicationController user.email_valid = true user.save! token.destroy - Notifier::deliver_reset_password(user, pass) + Notifier.deliver_reset_password(user, pass) flash[:notice] = "Your password has been changed and is on its way to your mailbox :-)" else flash[:notice] = "Didn't find that token, check the URL maybe?" end end + redirect_to :action => 'login' end @@ -123,9 +128,9 @@ class UserController < ApplicationController end return elsif User.authenticate(:username => email_or_display_name, :password => pass, :inactive => true) - flash[:notice] = "Sorry, your account is not active yet.
Please click on the link in the account confirmation email to activate your account." + @notice = "Sorry, your account is not active yet.
Please click on the link in the account confirmation email to activate your account." else - flash[:notice] = "Sorry, couldn't log in with those details." + @notice = "Sorry, couldn't log in with those details." end end end @@ -159,7 +164,27 @@ class UserController < ApplicationController session[:user] = @user.id redirect_to :action => 'account', :display_name => @user.display_name else - flash[:notice] = 'Something went wrong confirming that user.' + @notice = 'Something went wrong confirming that user.' + end + end + end + + def confirm_email + if params[:confirm_action] + token = UserToken.find_by_token(params[:confirm_string]) + if token and token.user.new_email? + @user = token.user + @user.email = @user.new_email + @user.new_email = nil + @user.active = true + @user.email_valid = true + @user.save! + token.destroy + flash[:notice] = 'Confirmed your email address, thanks for signing up!' + session[:user] = @user.id + redirect_to :action => 'account', :display_name => @user.display_name + else + @notice = 'Something went wrong confirming that email address.' end end end @@ -209,13 +234,14 @@ class UserController < ApplicationController unless @user.is_friends_with?(new_friend) if friend.save flash[:notice] = "#{name} is now your friend." - Notifier::deliver_friend_notification(friend) + Notifier.deliver_friend_notification(friend) else friend.add_error("Sorry, failed to add #{name} as a friend.") end else flash[:notice] = "You are already friends with #{name}." end + redirect_to :controller => 'user', :action => 'view' end end @@ -230,9 +256,8 @@ class UserController < ApplicationController else flash[:notice] = "#{friend.display_name} was not already one of your friends." end + redirect_to :controller => 'user', :action => 'view' end end - end -