summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormr <mr@mrautenberg.de>2010-12-02 11:56:52 +0100
committermr <mr@mrautenberg.de>2010-12-02 11:56:52 +0100
commit6bdab49bab96cd5f498a36a0b76deb70cb945a21 (patch)
tree8a993c3d500f01d676b863ef9912e173b7d483a9
parentb91512499e7934642729f5511daa4dba570b97fd (diff)
merge with helma/development
-rw-r--r--application.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/application.rb b/application.rb
index 6518ea8..9f1841d 100644
--- a/application.rb
+++ b/application.rb
@@ -8,8 +8,11 @@ class Dataset
property :id, Serial
property :uri, String, :length => 255
property :yaml, Text, :length => 2**32-1
+ property :token_id, String, :length => 255
property :created_at, DateTime
+ after :save, :check_policy
+
def load(params,request)
data = request.env["rack.input"].read
@@ -87,6 +90,11 @@ class Dataset
end
=end
+ private
+ def check_policy
+ OpenTox::Authorization.check_policy(uri, token_id)
+ end
+
end
DataMapper.auto_upgrade!
@@ -246,6 +254,8 @@ end
# @return [text/uri-list] Task URI or Dataset URI (empty datasets)
post '/?' do
@dataset = Dataset.create
+ @dataset.token_id = params[:token_id] if params[:token_id]
+ @dataset.token_id = request.env['HTTP_TOKEN_ID'] if !dataset.token_id and request.env['HTTP_TOKEN_ID']
response['Content-Type'] = 'text/uri-list'
@dataset.update(:uri => url_for("/#{@dataset.id}", :full))
if params.empty? and request.env["rack.input"].read.empty?
@@ -292,6 +302,14 @@ delete '/:id' do
dataset = Dataset.get(params[:id])
FileUtils.rm Dir["public/#{params[:id]}.*"]
dataset.destroy!
+ if params[:token_id] and !Dataset.get(params[:id]) and uri
+ begin
+ aa = OpenTox::Authorization.delete_policies_from_uri(uri, params[:token_id])
+ LOGGER.debug "Policy deleted for Dataset URI: #{uri} with result: #{aa}"
+ rescue
+ LOGGER.warn "Policy delete error for Dataset URI: #{uri}"
+ end
+ end
response['Content-Type'] = 'text/plain'
"Dataset #{params[:id]} deleted."
rescue