X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/7b57119146d7a7c648fb2888b0d019d1e64b7a3e..001ff5764bcf15aaa179dc5c7844038676536622:/app/controllers/user_controller.rb diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index ed17c1e41..de43fee14 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -1,6 +1,7 @@ class UserController < ApplicationController layout :choose_layout + before_filter :disable_terms_redirect, :only => [:terms, :save, :logout] before_filter :authorize, :only => [:api_details, :api_gpx_files] before_filter :authorize_web, :except => [:api_details, :api_gpx_files] before_filter :set_locale, :except => [:api_details, :api_gpx_files] @@ -55,7 +56,10 @@ class UserController < ApplicationController elsif params[:decline] if @user @user.terms_seen = true - @user.save + + if @user.save + flash[:notice] = t 'user.new.terms declined', :url => t('user.new.terms declined url') + end if params[:referer] redirect_to params[:referer] @@ -95,9 +99,9 @@ class UserController < ApplicationController flash[:notice] = t 'user.new.flash create success message', :email => @user.email Notifier.deliver_signup_confirm(@user, @user.tokens.create(:referer => params[:referer])) session[:token] = @user.tokens.create.token - redirect_to :action => 'login' + redirect_to :action => 'login', :referer => params[:referer] else - render :action => 'new' + render :action => 'new', :referer => params[:referer] end end end @@ -501,12 +505,23 @@ private # Choose the layout to use. See # https://rails.lighthouseapp.com/projects/8994/tickets/5371-layout-with-onlyexcept-options-makes-other-actions-render-without-layouts def choose_layout + oauth_url = url_for(:controller => :oauth, :action => :oauthorize, :only_path => true) + if [ 'api_details' ].include? action_name nil - elsif [ 'login', 'new', 'terms'].include? action_name + elsif params[:referer] and URI.parse(params[:referer]).path == oauth_url 'slim' else 'site' end end + + ## + # + def disable_terms_redirect + # this is necessary otherwise going to the user terms page, when + # having not agreed already would cause an infinite redirect loop. + # it's .now so that this doesn't propagate to other pages. + flash.now[:showing_terms] = true + end end