projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2762: When deleting an object, delete permissions and fail if other
[arvados.git]
/
services
/
api
/
app
/
models
/
arvados_model.rb
diff --git
a/services/api/app/models/arvados_model.rb
b/services/api/app/models/arvados_model.rb
index 69d329f02ad4c8d6d60356216e4d563de619ffcc..4faa0d041ffa28d3497a085d01285ab8ca6906df 100644
(file)
--- a/
services/api/app/models/arvados_model.rb
+++ b/
services/api/app/models/arvados_model.rb
@@
-26,7
+26,7
@@
class ArvadosModel < ActiveRecord::Base
# Note: This only returns permission links. It does not account for
# permissions obtained via user.is_admin or
# user.uuid==object.owner_uuid.
# Note: This only returns permission links. It does not account for
# permissions obtained via user.is_admin or
# user.uuid==object.owner_uuid.
- has_many :permissions, :foreign_key => :head_uuid, :class_name => 'Link', :primary_key => :uuid, :conditions => "link_class = 'permission'"
+ has_many :permissions, :foreign_key => :head_uuid, :class_name => 'Link', :primary_key => :uuid, :conditions => "link_class = 'permission'"
, dependent: :destroy
class PermissionDeniedError < StandardError
def http_status
class PermissionDeniedError < StandardError
def http_status
@@
-236,6
+236,11
@@
class ArvadosModel < ActiveRecord::Base
return true
end
return true
end
+ def destroy_permission_links
+ Link.destroy_all(['link_class=? and (head_uuid=? or tail_uuid=?)',
+ 'permission', uuid, uuid])
+ end
+
def ensure_permission_to_destroy
raise PermissionDeniedError unless permission_to_destroy
end
def ensure_permission_to_destroy
raise PermissionDeniedError unless permission_to_destroy
end