Add support for ACL blocks on note commenting
This commit is contained in:
parent
1f5615f022
commit
098c2675ba
3 changed files with 21 additions and 0 deletions
|
@ -53,6 +53,9 @@ class NotesController < ApplicationController
|
||||||
##
|
##
|
||||||
# Create a new note
|
# Create a new note
|
||||||
def create
|
def create
|
||||||
|
# Check the ACLs
|
||||||
|
raise OSM::APIAccessDenied if Acl.no_note_comment(request.remote_ip)
|
||||||
|
|
||||||
# Check the arguments are sane
|
# Check the arguments are sane
|
||||||
raise OSM::APIBadUserInput.new("No lat was given") unless params[:lat]
|
raise OSM::APIBadUserInput.new("No lat was given") unless params[:lat]
|
||||||
raise OSM::APIBadUserInput.new("No lon was given") unless params[:lon]
|
raise OSM::APIBadUserInput.new("No lon was given") unless params[:lon]
|
||||||
|
@ -86,6 +89,9 @@ class NotesController < ApplicationController
|
||||||
##
|
##
|
||||||
# Add a comment to an existing note
|
# Add a comment to an existing note
|
||||||
def comment
|
def comment
|
||||||
|
# Check the ACLs
|
||||||
|
raise OSM::APIAccessDenied if Acl.no_note_comment(request.remote_ip)
|
||||||
|
|
||||||
# Check the arguments are sane
|
# Check the arguments are sane
|
||||||
raise OSM::APIBadUserInput.new("No id was given") unless params[:id]
|
raise OSM::APIBadUserInput.new("No id was given") unless params[:id]
|
||||||
raise OSM::APIBadUserInput.new("No text was given") if params[:text].blank?
|
raise OSM::APIBadUserInput.new("No text was given") if params[:text].blank?
|
||||||
|
|
|
@ -11,6 +11,10 @@ class Acl < ActiveRecord::Base
|
||||||
self.match(address, domain).where(:k => "no_account_creation").exists?
|
self.match(address, domain).where(:k => "no_account_creation").exists?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.no_note_comment(address, domain = nil)
|
||||||
|
self.match(address, domain).where(:k => "no_note_comment").exists?
|
||||||
|
end
|
||||||
|
|
||||||
def self.no_trace_download(address, domain = nil)
|
def self.no_trace_download(address, domain = nil)
|
||||||
self.match(address, domain).where(:k => "no_trace_download").exists?
|
self.match(address, domain).where(:k => "no_trace_download").exists?
|
||||||
end
|
end
|
||||||
|
|
11
lib/osm.rb
11
lib/osm.rb
|
@ -24,6 +24,17 @@ module OSM
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Raised when access is denied.
|
||||||
|
class APIAccessDenied < RuntimeError
|
||||||
|
def status
|
||||||
|
:forbidden
|
||||||
|
end
|
||||||
|
|
||||||
|
def to_s
|
||||||
|
"Access denied"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Raised when an API object is not found.
|
# Raised when an API object is not found.
|
||||||
class APINotFoundError < APIError
|
class APINotFoundError < APIError
|
||||||
def status
|
def status
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue