X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/40447d7fe7a73c6babd90fbb6d10f72f8de3a3e4..1af0915450b8ae9f977d699da35b0ced2244bb7a:/services/api/app/controllers/arvados/v1/containers_controller.rb diff --git a/services/api/app/controllers/arvados/v1/containers_controller.rb b/services/api/app/controllers/arvados/v1/containers_controller.rb index 65d8385ad5..98b987639b 100644 --- a/services/api/app/controllers/arvados/v1/containers_controller.rb +++ b/services/api/app/controllers/arvados/v1/containers_controller.rb @@ -17,7 +17,14 @@ class Arvados::V1::ContainersController < ApplicationController if @object.locked_by_uuid != Thread.current[:api_client_authorization].uuid raise ArvadosModel::PermissionDeniedError.new("Not locked by your token") end - @object = @object.auth + if @object.runtime_token.nil? + @object = @object.auth + else + @object = ApiClientAuthorization.validate(token: @object.runtime_token) + if @object.nil? + raise ArvadosModel::PermissionDeniedError.new("Invalid runtime_token") + end + end show end @@ -51,20 +58,19 @@ class Arvados::V1::ContainersController < ApplicationController if Thread.current[:api_client_authorization].nil? send_error("Not logged in", status: 401) else - c = Container.where(auth_uuid: Thread.current[:api_client_authorization].uuid).first - if c.nil? + c = Container.for_current_token + if c.nil? or c.first.nil? send_error("Token is not associated with a container.", status: 404) else - @object = c + @object = c.first show end end end def secret_mounts - if @object && - @object.auth_uuid && - @object.auth_uuid == Thread.current[:api_client_authorization].uuid + c = Container.for_current_token + if @object && c && @object.uuid == c.uuid send_json({"secret_mounts" => @object.secret_mounts}) else send_error("Token is not associated with this container.", status: 403)