X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/59cc0015f565e89327d83bbb3b0787e7c4270ed9..94d19ae567dc7723129ee2f00576023aaee18fc7:/app/controllers/api_controller.rb diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 99afae672..cb3d71d49 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -1,27 +1,30 @@ class ApiController < ApplicationController + skip_before_action :verify_authenticity_token - def map + def authorize(realm = "Web Password", errormessage = "Couldn't authenticate you") + # make the current_user object from any auth sources we have + setup_user_auth - - doc = XML::Document.new - doc.encoding = 'UTF-8' - root = XML::Node.new 'osm' - root['version'] = '0.4' - root['generator'] = 'OpenStreetMap server' - doc.root = root - - render :text => doc.to_s - - #el1 = XML::Node.new 'node' - #el1['id'] = self.id.to_s - #el1['lat'] = self.latitude.to_s - #el1['lon'] = self.longitude.to_s - #Node.split_tags(el1, self.tags) - #el1['visible'] = self.visible.to_s - #el1['timestamp'] = self.timestamp.xmlschema - #root << el1 + # handle authenticate pass/fail + unless current_user + # no auth, the user does not exist or the password was wrong + response.headers["WWW-Authenticate"] = "Basic realm=\"#{realm}\"" + render :plain => errormessage, :status => :unauthorized + return false + end end - - + def deny_access(_exception) + if current_token + set_locale + report_error t("oauth.permissions.missing"), :forbidden + elsif current_user + head :forbidden + else + realm = "Web Password" + errormessage = "Couldn't authenticate you" + response.headers["WWW-Authenticate"] = "Basic realm=\"#{realm}\"" + render :plain => errormessage, :status => :unauthorized + end + end end