myexperiment-hackers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[myexperiment-hackers] [3430] trunk: Users with update rights can see pe


From: noreply
Subject: [myexperiment-hackers] [3430] trunk: Users with update rights can see permissions for resources in the REST API
Date: Wed, 20 Feb 2013 15:19:42 +0000 (UTC)

Revision
3430
Author
fbacall
Date
2013-02-20 15:19:41 +0000 (Wed, 20 Feb 2013)

Log Message

Users with update rights can see permissions for resources in the REST API

Modified Paths

Diff

Modified: trunk/config/tables.xml


(Binary files differ)

Modified: trunk/lib/rest.rb (3429 => 3430)


--- trunk/lib/rest.rb	2013-02-18 12:37:26 UTC (rev 3429)
+++ trunk/lib/rest.rb	2013-02-20 15:19:41 UTC (rev 3430)
@@ -1857,6 +1857,52 @@
   privileges
 end
 
+# Permissions - only visible to users with edit permissions
+
+def permissions(ob, user, query)
+
+  def permission_node(view, download, edit, category, id = nil)
+    node = LibXML::XML::Node.new('permission')
+    category_node = LibXML::XML::Node.new('category')
+    category_node << category
+    node << category_node
+    if id
+      id_node = LibXML::XML::Node.new('category')
+      id_node << id
+      node << id_node
+    end
+    if view
+      privilege = LibXML::XML::Node.new('privilege')
+      privilege['type'] = "view"
+      node << privilege
+    end
+    if download
+      privilege = LibXML::XML::Node.new('privilege')
+      privilege['type'] = "download"
+      node << privilege
+    end
+    if edit
+      privilege = LibXML::XML::Node.new('privilege')
+      privilege['type'] = "edit"
+      node << privilege
+    end
+
+    node
+  end
+
+  permissions = LibXML::XML::Node.new('permissions')
+  permissions << permission_node([0,1,2].include?(ob.contribution.policy.share_mode),
+                                 ob.contribution.policy.share_mode == 0,
+                                 false,
+                                 'public')
+
+  ob.contribution.policy.permissions.select {|p| p.contributor_type == "Network"}.each do |perm|
+    permissions << permission_node(perm.view, perm.download, perm.edit, 'group', perm.contributor_id)
+  end
+
+  permissions
+end
+
 # Comments
 
 def comment_aux(action, opts)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]