Reject uploads unless the user has made their edits pubic.
authorTom Hughes <tom@compton.nu>
Thu, 16 Apr 2009 21:50:20 +0000 (21:50 +0000)
committerTom Hughes <tom@compton.nu>
Thu, 16 Apr 2009 21:50:20 +0000 (21:50 +0000)
app/controllers/application.rb
app/controllers/changeset_controller.rb
app/controllers/node_controller.rb
app/controllers/relation_controller.rb
app/controllers/way_controller.rb

index 21f691bb344c85036cf3681f00af222b3a8c1c2b..bfd2e9c546e852dcabad7f11ee2af4694a3df373 100644 (file)
@@ -82,6 +82,14 @@ class ApplicationController < ActionController::Base
     end
   end
 
+  def require_public_data
+    unless @user.data_public?
+      response.headers['Error'] = "You must make your edits public to upload new data"
+      render :nothing => true, :status => :forbidden
+      return false
+    end
+  end
+
   # Report and error to the user
   # (If anyone ever fixes Rails so it can set a http status "reason phrase",
   #  rather than only a status code and having the web engine make up a 
index a363a26e1fffbd9867d03609dc9815b69d0333df..4913a600e1d036a5c0e41dcdbd35b97764acd32d 100644 (file)
@@ -7,6 +7,7 @@ class ChangesetController < ApplicationController
   session :off, :except => [:list, :list_user, :list_bbox]
   before_filter :authorize_web, :only => [:list, :list_user, :list_bbox]
   before_filter :authorize, :only => [:create, :update, :delete, :upload, :include, :close]
+  before_filter :require_public_data, :only => [:create, :update, :delete, :upload, :include, :close]
   before_filter :check_api_writable, :only => [:create, :update, :delete, :upload, :include]
   before_filter :check_api_readable, :except => [:create, :update, :delete, :upload, :download, :query]
   after_filter :compress_output
index 80a3b30d5cfd04d61c24ee5dd7c1723f0b617646..6e96d31ca4cac18a5a9130369eade7b402056083 100644 (file)
@@ -5,6 +5,7 @@ class NodeController < ApplicationController
 
   session :off
   before_filter :authorize, :only => [:create, :update, :delete]
+  before_filter :require_public_data, :only => [:create, :update, :delete]
   before_filter :check_api_writable, :only => [:create, :update, :delete]
   before_filter :check_api_readable, :except => [:create, :update, :delete]
   after_filter :compress_output
index 3d3fa21858ad35bbba5a0183572adf4e3076d19e..a249e42a02f9b1b4142b2993e0abef9e3c0fe765 100644 (file)
@@ -3,6 +3,7 @@ class RelationController < ApplicationController
 
   session :off
   before_filter :authorize, :only => [:create, :update, :delete]
+  before_filter :require_public_data, :only => [:create, :update, :delete]
   before_filter :check_api_writable, :only => [:create, :update, :delete]
   before_filter :check_api_readable, :except => [:create, :update, :delete]
   after_filter :compress_output
index e28945dcd90d7ad898905bd854b0bd61fe4ebfe6..ab83d4ec3cbb1a2ea334e0e8b9936450a60972f3 100644 (file)
@@ -3,6 +3,7 @@ class WayController < ApplicationController
 
   session :off
   before_filter :authorize, :only => [:create, :update, :delete]
+  before_filter :require_public_data, :only => [:create, :update, :delete]
   before_filter :check_api_writable, :only => [:create, :update, :delete]
   before_filter :check_api_readable, :except => [:create, :update, :delete]
   after_filter :compress_output