X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c4bf3c349264a785a342ad560c6f71792c66b4f8..7a6612d56b719165d3aff84754521c9a38d9912a:/services/api/app/controllers/user_sessions_controller.rb diff --git a/services/api/app/controllers/user_sessions_controller.rb b/services/api/app/controllers/user_sessions_controller.rb index 3a5be1c7e1..795b114bf9 100644 --- a/services/api/app/controllers/user_sessions_controller.rb +++ b/services/api/app/controllers/user_sessions_controller.rb @@ -1,6 +1,7 @@ class UserSessionsController < ApplicationController before_filter :require_auth_scope, :only => [ :destroy ] + skip_before_filter :set_cors_headers skip_before_filter :find_object_by_uuid skip_before_filter :render_404_if_no_object @@ -14,7 +15,7 @@ class UserSessionsController < ApplicationController unless identity_url_ok # Whoa. This should never happen. logger.error "UserSessionsController.create: omniauth object missing/invalid" - logger.error "omniauth.pretty_inspect():\n\n#{omniauth.pretty_inspect()}" + logger.error "omniauth: "+omniauth.pretty_inspect return redirect_to login_failure_url end @@ -92,14 +93,15 @@ class UserSessionsController < ApplicationController flash[:notice] = 'You have logged off' return_to = params[:return_to] || root_url - redirect_to "#{CUSTOM_PROVIDER_URL}/users/sign_out?redirect_uri=#{CGI.escape return_to}" + redirect_to "#{Rails.configuration.sso_provider_url}/users/sign_out?redirect_uri=#{CGI.escape return_to}" end # login - Just bounce to /auth/joshid. The only purpose of this function is # to save the return_to parameter (if it exists; see the application # controller). /auth/joshid bypasses the application controller. def login - auth_method = params[:auth_method] || "google" + auth_provider = if params[:auth_provider] then "auth_provider=#{CGI.escape(params[:auth_provider])}" else "" end + if current_user and params[:return_to] # Already logged in; just need to send a token to the requesting # API client. @@ -109,9 +111,9 @@ class UserSessionsController < ApplicationController send_api_token_to(params[:return_to], current_user) elsif params[:return_to] - redirect_to "/auth/joshid?return_to=#{CGI.escape(params[:return_to])}&auth_method=#{CGI.escape(auth_method)}" + redirect_to "/auth/joshid?return_to=#{CGI.escape(params[:return_to])}&#{auth_provider}" else - redirect_to "/auth/joshid?auth_method=#{CGI.escape(auth_method)}" + redirect_to "/auth/joshid?#{auth_provider}" end end @@ -140,4 +142,8 @@ class UserSessionsController < ApplicationController callback_url += 'api_token=' + api_client_auth.api_token redirect_to callback_url end + + def cross_origin_forbidden + send_error 'Forbidden', status: 403 + end end