]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/application_controller.rb
Add support for OAuth2 using doorkeeper
[rails.git] / app / controllers / application_controller.rb
index 586b181165941e2fb887bbe6ff1b6ab2e2b5f4dc..fc8b75b60144ec40e2bf2a851ae7fcdce8c171da 100644 (file)
@@ -59,7 +59,7 @@ class ApplicationController < ActionController::Base
   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
@@ -208,7 +208,7 @@ class ApplicationController < ActionController::Base
     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
@@ -345,7 +345,7 @@ class ApplicationController < ActionController::Base
   end
 
   def deny_access(_exception)
-    if current_token
+    if doorkeeper_token || current_token
       set_locale
       report_error t("oauth.permissions.missing"), :forbidden
     elsif current_user
@@ -356,7 +356,7 @@ class ApplicationController < ActionController::Base
       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
@@ -393,6 +393,8 @@ class ApplicationController < ActionController::Base
       referer = nil
     end
 
+    referer = nil if referer&.path&.first != "/"
+
     referer.to_s
   end
 end