]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/user_controller.rb
Make sure the ruby quadtile code give the same result as the C version
[rails.git] / app / controllers / user_controller.rb
index 25dd18f9223b905493baf91b50b1f5ecfd5568e3..97b0de73c79fdf4d85676069df17a816a6989fd3 100644 (file)
@@ -1,6 +1,7 @@
 class UserController < ApplicationController
   layout :choose_layout
 
+  before_filter :disable_terms_redirect, :only => [:terms, :save, :logout, :api_details]
   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 params[:referer] == url_for(:controller => :oauth, :action => :oauthorize, :only_path => true)
+    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[:skip_terms] = true
+  end
 end