X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/385ce6601ff872a0a4124071ef39869a4d3cfd53..69a1f282ad2983d36bd8fb7c41c681e1baa5dfa1:/apps/workbench/app/controllers/application_controller.rb diff --git a/apps/workbench/app/controllers/application_controller.rb b/apps/workbench/app/controllers/application_controller.rb index a3576bc83e..ade586c474 100644 --- a/apps/workbench/app/controllers/application_controller.rb +++ b/apps/workbench/app/controllers/application_controller.rb @@ -1,16 +1,16 @@ class ApplicationController < ActionController::Base + include ArvadosApiClientHelper + respond_to :html, :json, :js protect_from_forgery ERROR_ACTIONS = [:render_error, :render_not_found] around_filter :thread_clear - around_filter(:thread_with_mandatory_api_token, - except: [:index, :show] + ERROR_ACTIONS) + around_filter :thread_with_mandatory_api_token, except: ERROR_ACTIONS around_filter :thread_with_optional_api_token before_filter :check_user_agreements, except: ERROR_ACTIONS before_filter :check_user_notifications, except: ERROR_ACTIONS - around_filter :using_reader_tokens, only: [:index, :show] before_filter :find_object_by_uuid, except: [:index] + ERROR_ACTIONS before_filter :check_my_folders, :except => ERROR_ACTIONS theme :select_theme @@ -65,28 +65,27 @@ class ApplicationController < ActionController::Base end def index + @limit ||= 200 if params[:limit] - limit = params[:limit].to_i - else - limit = 200 + @limit = params[:limit].to_i end + @offset ||= 0 if params[:offset] - offset = params[:offset].to_i - else - offset = 0 + @offset = params[:offset].to_i end + @filters ||= [] if params[:filters] filters = params[:filters] if filters.is_a? String filters = Oj.load filters end - else - filters = [] + @filters += filters end - @objects ||= model_class.filter(filters).limit(limit).offset(offset).all + @objects ||= model_class + @objects = @objects.filter(@filters).limit(@limit).offset(@offset).all respond_to do |f| f.json { render json: @objects } f.html { render } @@ -199,7 +198,7 @@ class ApplicationController < ActionController::Base respond_to do |f| f.html { if request.method == 'GET' - redirect_to $arvados_api_client.arvados_login_url(return_to: request.url) + redirect_to arvados_api_client.arvados_login_url(return_to: request.url) else flash[:error] = "Either you are not logged in, or your session has timed out. I can't automatically log you in and re-attempt this request." redirect_to :back @@ -213,23 +212,6 @@ class ApplicationController < ActionController::Base false # For convenience to return from callbacks end - def using_reader_tokens(login_optional=false) - if params[:reader_tokens].is_a?(Array) and params[:reader_tokens].any? - Thread.current[:reader_tokens] = params[:reader_tokens] - end - begin - yield - rescue ArvadosApiClient::NotLoggedInException - if login_optional - raise - else - return redirect_to_login - end - ensure - Thread.current[:reader_tokens] = nil - end - end - def using_specific_api_token(api_token) start_values = {} [:arvados_api_token, :user].each do |key|