Added doc output directories to .gitignore
[arvados.git] / services / api / lib / common_api_template.rb
index 5426d13c2375fc9560e9ecadb275029068dd85fb..b1da94ab331b3b5033521e70ee39083003cfe2d6 100644 (file)
@@ -1,7 +1,11 @@
 module CommonApiTemplate
   def self.included(base)
-    base.extend(ClassMethods)
     base.acts_as_api
+    base.class_eval do
+      alias_method :as_api_response_orig, :as_api_response
+      include InstanceMethods
+    end
+    base.extend(ClassMethods)
     base.api_accessible :common do |t|
       t.add :href
       t.add :kind
@@ -16,6 +20,21 @@ module CommonApiTemplate
     end
   end
 
+  module InstanceMethods
+    # choose template based on opts[:for_user]
+    def as_api_response(template=nil, opts={})
+      if template.nil?
+        user = opts[:for_user] || current_user
+        if user.andand.is_admin and self.respond_to? :api_accessible_superuser
+          template = :superuser
+        else
+          template = :user
+        end
+      end
+      self.as_api_response_orig(template, opts)
+    end
+  end
+
   module ClassMethods
   end
 end