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
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