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 21f691b..bfd2e9c 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 a363a26..4913a60 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 80a3b30..6e96d31 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 3d3fa21..a249e42 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 e28945d..ab83d4e 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