1 module CurrentApiClient
7 Thread.current[:api_client]
10 def current_api_client_authorization
11 Thread.current[:api_client_authorization]
15 Thread.current[:api_url_base]
18 def current_default_owner
19 # owner_uuid for newly created objects
20 ((current_api_client_authorization &&
21 current_api_client_authorization.default_owner_uuid) ||
22 (current_user && current_user.default_owner_uuid) ||
23 (current_user && current_user.uuid) ||
27 # Where is the client connecting from?
28 def current_api_client_ip_address
29 Thread.current[:api_client_ip_address]
33 [Server::Application.config.uuid_prefix,
35 '000000000000000'].join('-')
39 [Server::Application.config.uuid_prefix,
41 '000000000000000'].join('-')
44 def anonymous_group_uuid
45 [Server::Application.config.uuid_prefix,
47 'anonymouspublic'].join('-')
50 def anonymous_user_uuid
51 [Server::Application.config.uuid_prefix,
53 'anonymouspublic'].join('-')
58 real_current_user = Thread.current[:user]
59 Thread.current[:user] = User.new(is_admin: true,
61 uuid: system_user_uuid)
62 $system_user = User.where('uuid=?', system_user_uuid).first
64 $system_user = User.new(uuid: system_user_uuid,
73 Thread.current[:user] = real_current_user
81 ActiveRecord::Base.transaction do
82 $system_group = Group.
83 where(uuid: system_group_uuid).first_or_create do |g|
84 g.update_attributes(name: "System group",
85 description: "System group")
86 User.all.collect(&:uuid).each do |user_uuid|
87 Link.create(link_class: 'permission',
89 tail_kind: 'arvados#group',
90 tail_uuid: system_group_uuid,
91 head_kind: 'arvados#user',
101 def all_users_group_uuid
102 [Server::Application.config.uuid_prefix,
104 'fffffffffffffff'].join('-')
108 if not $all_users_group
109 act_as_system_user do
110 ActiveRecord::Base.transaction do
111 $all_users_group = Group.
112 where(uuid: all_users_group_uuid).first_or_create do |g|
113 g.update_attributes(name: "All users",
114 description: "All users",
123 def act_as_system_user
125 act_as_user system_user do
129 Thread.current[:user] = system_user
134 user_was = Thread.current[:user]
135 Thread.current[:user] = user
139 Thread.current[:user] = user_was
144 if not $anonymous_group
145 act_as_system_user do
146 ActiveRecord::Base.transaction do
147 $anonymous_group = Group.
148 where(uuid: anonymous_group_uuid).first_or_create do |g|
149 g.update_attributes(name: "Anonymous group",
150 description: "Anonymous group")
159 if not $anonymous_user
160 act_as_system_user do
161 $anonymous_user = User.where('uuid=?', anonymous_user_uuid).first
163 $anonymous_user = User.new(uuid: anonymous_user_uuid,
166 email: 'anonymouspublic',
167 first_name: 'anonymouspublic',
168 last_name: 'anonymouspublic')
169 $anonymous_user.save!
170 $anonymous_user.reload
173 group_perms = Link.where(tail_uuid: anonymous_user_uuid,
174 head_uuid: anonymous_group_uuid,
175 link_class: 'permission',
179 group_perm = Link.create!(tail_uuid: anonymous_user_uuid,
180 head_uuid: anonymous_group_uuid,
181 link_class: 'permission',
189 def empty_collection_uuid
190 'd41d8cd98f00b204e9800998ecf8427e+0'
194 if not $empty_collection
195 act_as_system_user do
196 ActiveRecord::Base.transaction do
197 $empty_collection = Collection.
198 where(portable_data_hash: empty_collection_uuid).
199 first_or_create!(manifest_text: '', owner_uuid: anonymous_group.uuid)