]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/application_controller.rb
Add :warning and :error flash messages which can be styled separately to
[rails.git] / app / controllers / application_controller.rb
index 6dbe9165ca2593b20f5fff3c7e6c46f7469016e6..66ab92a5cf379fa374d986a99261c72f170ee5d1 100644 (file)
@@ -39,6 +39,19 @@ class ApplicationController < ActionController::Base
     end
   end
 
     end
   end
 
+  ##
+  # require the user to have cookies enabled in their browser
+  def require_cookies
+    if request.cookies["_osm_session"].to_s == ""
+      if params[:cookie_test].nil?
+        redirect_to params.merge(:cookie_test => "true")
+        return false
+      else
+        flash.now[:warning] = t 'application.require_cookies.cookies_needed'
+      end
+    end
+  end
+
   # Utility methods to make the controller filter methods easier to read and write.
   def require_allow_read_prefs
     require_capability(:allow_read_prefs)
   # Utility methods to make the controller filter methods easier to read and write.
   def require_allow_read_prefs
     require_capability(:allow_read_prefs)
@@ -78,6 +91,12 @@ class ApplicationController < ActionController::Base
         @user = User.authenticate(:username => username, :password => passwd) # basic auth
       end
     end
         @user = User.authenticate(:username => username, :password => passwd) # basic auth
       end
     end
+
+    # check if the user has been banned
+    unless @user.nil? or @user.active_blocks.empty?
+      # NOTE: need slightly more helpful message than this.
+      render :text => t('application.setup_user_auth.blocked'), :status => :forbidden
+    end
   end
 
   def authorize(realm='Web Password', errormessage="Couldn't authenticate you") 
   end
 
   def authorize(realm='Web Password', errormessage="Couldn't authenticate you") 
@@ -174,6 +193,8 @@ class ApplicationController < ActionController::Base
     rescue OSM::APIError => ex
       report_error ex.message, ex.status
     rescue Exception => ex
     rescue OSM::APIError => ex
       report_error ex.message, ex.status
     rescue Exception => ex
+      logger.info("API threw unexpected #{ex.class} exception: #{ex.message}")
+      ex.backtrace.each { |l| logger.info(l) }
       report_error "#{ex.class}: #{ex.message}", :internal_server_error
     end
   end
       report_error "#{ex.class}: #{ex.message}", :internal_server_error
     end
   end