]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/application_controller.rb
Merge remote-tracking branch 'upstream/pull/3217'
[rails.git] / app / controllers / application_controller.rb
index 9f2d79eaa7bf5845b4c1cb78332e11b9798170b9..b4c0fbc23feb7a5f1fb5c4f1482f740357fde78c 100644 (file)
@@ -1,4 +1,6 @@
 class ApplicationController < ActionController::Base
 class ApplicationController < ActionController::Base
+  require "timeout"
+
   include SessionPersistence
 
   protect_from_forgery :with => :exception
   include SessionPersistence
 
   protect_from_forgery :with => :exception
@@ -57,7 +59,7 @@ class ApplicationController < ActionController::Base
   def require_user
     unless current_user
       if request.get?
   def require_user
     unless current_user
       if request.get?
-        redirect_to :controller => "users", :action => "login", :referer => request.fullpath
+        redirect_to login_path(:referer => request.fullpath)
       else
         head :forbidden
       end
       else
         head :forbidden
       end
@@ -206,7 +208,7 @@ class ApplicationController < ActionController::Base
     report_error e.message, :bad_request
   rescue ActiveRecord::RecordInvalid => e
     message = "#{e.record.class} #{e.record.id}: "
     report_error e.message, :bad_request
   rescue ActiveRecord::RecordInvalid => e
     message = "#{e.record.class} #{e.record.id}: "
-    e.record.errors.each { |attr, msg| message << "#{attr}: #{msg} (#{e.record[attr].inspect})" }
+    e.record.errors.each { |error| message << "#{error.attribute}: #{error.message} (#{e.record[error.attribute].inspect})" }
     report_error message, :bad_request
   rescue OSM::APIError => e
     report_error e.message, e.status
     report_error message, :bad_request
   rescue OSM::APIError => e
     report_error e.message, e.status
@@ -229,7 +231,7 @@ class ApplicationController < ActionController::Base
   ##
   # wrap an api call in a timeout
   def api_call_timeout(&block)
   ##
   # wrap an api call in a timeout
   def api_call_timeout(&block)
-    OSM::Timer.timeout(Settings.api_timeout, Timeout::Error, &block)
+    Timeout.timeout(Settings.api_timeout, Timeout::Error, &block)
   rescue Timeout::Error
     raise OSM::APITimeoutError
   end
   rescue Timeout::Error
     raise OSM::APITimeoutError
   end
@@ -237,7 +239,7 @@ class ApplicationController < ActionController::Base
   ##
   # wrap a web page in a timeout
   def web_timeout(&block)
   ##
   # wrap a web page in a timeout
   def web_timeout(&block)
-    OSM::Timer.timeout(Settings.web_timeout, Timeout::Error, &block)
+    Timeout.timeout(Settings.web_timeout, Timeout::Error, &block)
   rescue ActionView::Template::Error => e
     e = e.cause
 
   rescue ActionView::Template::Error => e
     e = e.cause
 
@@ -354,7 +356,7 @@ class ApplicationController < ActionController::Base
       end
     elsif request.get?
       respond_to do |format|
       end
     elsif request.get?
       respond_to do |format|
-        format.html { redirect_to :controller => "users", :action => "login", :referer => request.fullpath }
+        format.html { redirect_to login_path(:referer => request.fullpath) }
         format.any { head :forbidden }
       end
     else
         format.any { head :forbidden }
       end
     else
@@ -391,6 +393,8 @@ class ApplicationController < ActionController::Base
       referer = nil
     end
 
       referer = nil
     end
 
+    referer = nil if referer&.path&.first != "/"
+
     referer.to_s
   end
 end
     referer.to_s
   end
 end