X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/8d0355a42caf66f40fe3007a43dc2c8b88712083..b9d2799dfebae724dda3b3e28641116ca5daf5c7:/apps/workbench/app/controllers/actions_controller.rb diff --git a/apps/workbench/app/controllers/actions_controller.rb b/apps/workbench/app/controllers/actions_controller.rb index f1985a6428..28680df33f 100644 --- a/apps/workbench/app/controllers/actions_controller.rb +++ b/apps/workbench/app/controllers/actions_controller.rb @@ -2,6 +2,14 @@ require "arvados/collection" class ActionsController < ApplicationController + # Skip require_thread_api_token if this is a show action + # for an object uuid that supports anonymous access. + skip_around_filter :require_thread_api_token, if: proc { |ctrl| + Rails.configuration.anonymous_user_token and + 'show' == ctrl.action_name and + params['uuid'] and + model_class.in?([Collection, Group, Job, PipelineInstance, PipelineTemplate]) + } skip_filter :require_thread_api_token, only: [:report_issue_popup, :report_issue] skip_filter :check_user_agreements, only: [:report_issue_popup, :report_issue] @@ -21,6 +29,8 @@ class ActionsController < ApplicationController @object.link_class == 'name' and ArvadosBase::resource_class_for_uuid(@object.head_uuid) == Collection redirect_to collection_path(id: @object.uuid) + elsif @object.is_a?(Group) and @object.group_class == 'project' + redirect_to project_path(id: @object.uuid) elsif @object redirect_to @object else @@ -228,24 +238,32 @@ You can try recreating the collection to get a copy with full provenance data." end end - expose_action :webshell do - shell_in_a_box_url_config = Rails.configuration.shell_in_a_box_url + # star / unstar the current project + def star + links = Link.where(tail_uuid: current_user.uuid, + head_uuid: @object.uuid, + link_class: 'star') - return render_not_found if not shell_in_a_box_url_config - - return unprocessable "Missing parameters" if not params['login'] or not params['hostname'] - - @webshell_login = params['login'] - @webshell_hostname = params['hostname'].chomp('.shell') - - if not shell_in_a_box_url_config.end_with?('/') - shell_in_a_box_url_config += '/' + if params['status'] == 'create' + # create 'star' link if one does not already exist + if !links.andand.any? + dst = Link.new(owner_uuid: current_user.uuid, + tail_uuid: current_user.uuid, + head_uuid: @object.uuid, + link_class: 'star', + name: @object.uuid) + dst.save! + end + else # delete any existing 'star' links + if links.andand.any? + links.each do |link| + link.destroy + end + end end - @webshell_url = shell_in_a_box_url_config + @webshell_hostname + '/' respond_to do |format| - render partial: 'virtual_machines/webshell' - return + format.js end end