X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/8c9544e60a6b4699a475623aed179bfb6bc96337..94d19ae567dc7723129ee2f00576023aaee18fc7:/app/controllers/api_controller.rb?ds=sidebyside diff --git a/app/controllers/api_controller.rb b/app/controllers/api_controller.rb index 9e3839697..cb3d71d49 100644 --- a/app/controllers/api_controller.rb +++ b/app/controllers/api_controller.rb @@ -1,44 +1,30 @@ class ApiController < ApplicationController - - def map - bbox = params['bbox'] - unless bbox and bbox.count(',') == 3 - render :nothing => true, :status => 400 - return + skip_before_action :verify_authenticity_token + + def authorize(realm = "Web Password", errormessage = "Couldn't authenticate you") + # make the current_user object from any auth sources we have + setup_user_auth + + # 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 - - bbox = bbox.split(',') - - min_lat = bbox[0].to_f - min_lon = bbox[1].to_f - max_lat = bbox[2].to_f - max_lon = bbox[3].to_f - - nodes = Node.find(:all, :conditions => ['latitude > ? AND longitude > ? AND latitude < ? AND longitude < ? AND visible = 1', min_lat, min_lon, max_lat, max_lon]) - - node_ids = "(#{nodes.collect {|node| node.id }})" - - segments = Segment.find(:all, :condtions => ['node_a in ? or node_b in ?', node_ids, node_ids]) - render :text => node_ids.join(',') - return - - 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 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