X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ff024b6b09112e89205d01370cdab19b49d6bd50..d81ea65da05119d5c6480d373b5d42bbee8ae1ad:/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 de0e3438d4..98bc53ae46 100644 --- a/apps/workbench/app/controllers/application_controller.rb +++ b/apps/workbench/app/controllers/application_controller.rb @@ -14,7 +14,7 @@ class ApplicationController < ActionController::Base around_filter :require_thread_api_token, except: ERROR_ACTIONS before_filter :accept_uuid_as_id_param, except: ERROR_ACTIONS before_filter :check_user_agreements, except: ERROR_ACTIONS - before_filter :check_user_profile, except: [:update_profile] + ERROR_ACTIONS + before_filter :check_user_profile, except: ERROR_ACTIONS before_filter :check_user_notifications, except: ERROR_ACTIONS before_filter :load_filters_and_paging_params, except: ERROR_ACTIONS before_filter :find_object_by_uuid, except: [:index, :choose] + ERROR_ACTIONS @@ -202,7 +202,7 @@ class ApplicationController < ActionController::Base return render_not_found("object not found") end respond_to do |f| - f.json { render json: @object.attributes.merge(href: url_for(@object)) } + f.json { render json: @object.attributes.merge(href: url_for(action: :show, id: @object)) } f.html { if params['tab_pane'] render_pane params['tab_pane'] @@ -274,7 +274,7 @@ class ApplicationController < ActionController::Base @object ||= model_class.new @new_resource_attrs, params["options"] if @object.save respond_to do |f| - f.json { render json: @object.attributes.merge(href: url_for(@object)) } + f.json { render json: @object.attributes.merge(href: url_for(action: :show, id: @object)) } f.html { redirect_to @object } @@ -501,7 +501,7 @@ class ApplicationController < ActionController::Base session.delete :arvados_api_token redirect_to_login else - redirect_to welcome_users_path, return_to: request.fullpath + redirect_to welcome_users_path(return_to: request.fullpath) end end @@ -512,19 +512,22 @@ class ApplicationController < ActionController::Base end end + helper_method :unsigned_user_agreements + def unsigned_user_agreements + @signed_ua_uuids ||= UserAgreement.signatures.map &:head_uuid + @unsigned_user_agreements ||= UserAgreement.all.map do |ua| + if not @signed_ua_uuids.index ua.uuid + Collection.find(ua.uuid) + end + end.compact + end + def check_user_agreements if current_user && !current_user.is_active if not current_user.is_invited - return redirect_to inactive_users_path, return_to: request.fullpath + return redirect_to inactive_users_path(return_to: request.fullpath) end - signatures = UserAgreement.signatures - @signed_ua_uuids = UserAgreement.signatures.map &:head_uuid - @required_user_agreements = UserAgreement.all.map do |ua| - if not @signed_ua_uuids.index ua.uuid - Collection.find(ua.uuid) - end - end.compact - if @required_user_agreements.empty? + if unsigned_user_agreements.empty? # No agreements to sign. Perhaps we just need to ask? current_user.activate if !current_user.is_active @@ -533,7 +536,7 @@ class ApplicationController < ActionController::Base end end if !current_user.is_active - redirect_to user_agreements_path, return_to: request.fullpath + redirect_to user_agreements_path(return_to: request.fullpath) end end true @@ -547,7 +550,7 @@ class ApplicationController < ActionController::Base end if missing_required_profile? - render 'users/profile' + redirect_to profile_user_path(current_user.uuid, return_to: request.fullpath) end true end