X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/fbe529d87e61ab63bcf749067422ab2cbbb655d0..4bbd7f531017daf2b72517b1c1e20b523270bdf8:/app/controllers/user_controller.rb diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index c181da305..db8a509bd 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -146,43 +146,39 @@ class UserController < ApplicationController def new @title = t 'user.new.title' - # The user is logged in already, so don't show them the signup page, instead - # send them to the home page + # The user is logged in already, so don't show them the signup + # page, instead send them to the home page redirect_to :controller => 'site', :action => 'index' if session[:user] end def login - if params[:user] and session[:user].nil? + @title = t 'user.login.title' + + if params[:user] email_or_display_name = params[:user][:email] pass = params[:user][:password] user = User.authenticate(:username => email_or_display_name, :password => pass) + if user session[:user] = user.id session_expires_after 1.month if params[:remember_me] - elsif User.authenticate(:username => email_or_display_name, :password => pass, :inactive => true) + + # The user is logged in, if the referer param exists, redirect + # them to that unless they've also got a block on them, in + # which case redirect them to the block so they can clear it. + if user.blocked_on_view + redirect_to user.blocked_on_view, :referrer => params[:referrer] + elsif params[:referer] + redirect_to params[:referer] + else + redirect_to :controller => 'site', :action => 'index' + end + elsif User.authenticate(:username => email_or_display_name, :password => pass, :inactive => true) flash.now[:error] = t 'user.login.account not active' else flash.now[:error] = t 'user.login.auth failure' end end - - if session[:user] - # The user is logged in, if the referer param exists, redirect them to that - # unless they've also got a block on them, in which case redirect them to - # the block so they can clear it. - user = User.find(session[:user]) - block = user.blocked_on_view - if block - redirect_to block, :referrer => params[:referrer] - elsif params[:referer] - redirect_to params[:referer] - else - redirect_to :controller => 'site', :action => 'index' - end - return - end - - @title = t 'user.login.title' end def logout @@ -287,7 +283,11 @@ class UserController < ApplicationController flash[:warning] = t 'user.make_friend.already_a_friend', :name => name end - redirect_to :controller => 'user', :action => 'view' + if params[:referer] + redirect_to params[:referer] + else + redirect_to :controller => 'user', :action => 'view' + end end end @@ -302,7 +302,11 @@ class UserController < ApplicationController flash[:error] = t 'user.remove_friend.not_a_friend', :name => friend.display_name end - redirect_to :controller => 'user', :action => 'view' + if params[:referer] + redirect_to params[:referer] + else + redirect_to :controller => 'user', :action => 'view' + end end end