X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9e1d5923421b3439f0cd3297240beebebed38754..de3bb6cb95b9699ff6eea6ac836c4598cec331a5:/services/api/lib/current_api_client.rb diff --git a/services/api/lib/current_api_client.rb b/services/api/lib/current_api_client.rb index c5581502cf..4c26010d2a 100644 --- a/services/api/lib/current_api_client.rb +++ b/services/api/lib/current_api_client.rb @@ -100,18 +100,24 @@ module CurrentApiClient def act_as_system_user if block_given? - user_was = Thread.current[:user] - Thread.current[:user] = system_user - begin + act_as_user system_user do yield - ensure - Thread.current[:user] = user_was end else Thread.current[:user] = system_user end end + def act_as_user user + user_was = Thread.current[:user] + Thread.current[:user] = user + begin + yield + ensure + Thread.current[:user] = user_was + end + end + def anonymous_group if not $anonymous_group act_as_system_user do @@ -140,22 +146,38 @@ module CurrentApiClient last_name: 'anonymouspublic') $anonymous_user.save! $anonymous_user.reload + end - group_perms = Link.where(tail_uuid: anonymous_user_uuid, - head_uuid: anonymous_group_uuid, - link_class: 'permission', - name: 'can_read') + group_perms = Link.where(tail_uuid: anonymous_user_uuid, + head_uuid: anonymous_group_uuid, + link_class: 'permission', + name: 'can_read') - if !group_perms.any? - group_perm = Link.create(tail_uuid: anonymous_user_uuid, - head_uuid: anonymous_group_uuid, - link_class: 'permission', - name: 'can_read') - end + if !group_perms.any? + group_perm = Link.create!(tail_uuid: anonymous_user_uuid, + head_uuid: anonymous_group_uuid, + link_class: 'permission', + name: 'can_read') end end end $anonymous_user end + def empty_collection_uuid + 'd41d8cd98f00b204e9800998ecf8427e+0' + end + + def empty_collection + if not $empty_collection + act_as_system_user do + ActiveRecord::Base.transaction do + $empty_collection = Collection. + where(portable_data_hash: empty_collection_uuid). + first_or_create!(manifest_text: '', owner_uuid: anonymous_group.uuid) + end + end + end + $empty_collection + end end