X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/57d7ce9de300d1340ed12d61248e7cea6bd1be15..76eaaac9fed4e74b8073ee08f99b84fc7922ac9f:/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 6d85212eb9..9f78587eab 100644 --- a/services/api/lib/current_api_client.rb +++ b/services/api/lib/current_api_client.rb @@ -98,20 +98,48 @@ module CurrentApiClient $system_group end + def all_users_group_uuid + [Server::Application.config.uuid_prefix, + Group.uuid_prefix, + 'fffffffffffffff'].join('-') + end + + def all_users_group + if not $all_users_group + act_as_system_user do + ActiveRecord::Base.transaction do + $all_users_group = Group. + where(uuid: all_users_group_uuid).first_or_create do |g| + g.update_attributes(name: "All users", + description: "All users", + group_class: "role") + end + end + end + end + $all_users_group + end + 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