X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/bd6b334c80cea328a51a8612d40ef16bdd6ab2e2..e48387b530d01be0f92f70390570169ddf3b9111:/services/api/app/models/link.rb diff --git a/services/api/app/models/link.rb b/services/api/app/models/link.rb index 649a6f80c2..bf21cf4b67 100644 --- a/services/api/app/models/link.rb +++ b/services/api/app/models/link.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + class Link < ArvadosModel include HasUuid include KindAndEtag @@ -20,11 +24,6 @@ class Link < ArvadosModel t.add :properties end - def properties - @properties ||= Hash.new - super - end - def head_kind if k = ArvadosModel::resource_class_for_uuid(head_uuid) k.kind @@ -49,8 +48,12 @@ class Link < ArvadosModel # Administrators can grant permissions return true if current_user.is_admin - # All users can grant permissions on objects they own or can manage head_obj = ArvadosModel.find_by_uuid(head_uuid) + + # No permission links can be pointed to past collection versions + return false if head_obj.is_a?(Collection) && head_obj.current_version_uuid != head_uuid + + # All users can grant permissions on objects they own or can manage return true if current_user.can?(manage: head_obj) # Default = deny.