X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/acedca207179925286810dd9c2ad7934ce5bfe69..685db28b50225cde7dbb03aa2275f7a165d888a3:/services/api/lib/common_api_template.rb diff --git a/services/api/lib/common_api_template.rb b/services/api/lib/common_api_template.rb index 5426d13c23..8aac264516 100644 --- a/services/api/lib/common_api_template.rb +++ b/services/api/lib/common_api_template.rb @@ -1,7 +1,15 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + 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 @@ -12,7 +20,21 @@ module CommonApiTemplate t.add :modified_by_client_uuid t.add :modified_by_user_uuid t.add :modified_at - t.add :updated_at + 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