Sha256: aa53d241a23b090cd765151a9afa74d0d728e7b7cbfd9c76252bd6a1a458e0dc

Contents?: true

Size: 1.18 KB

Versions: 37

Compression:

Stored size: 1.18 KB

Contents

require "action_controller/metal"
require 'rails'

# Failure application that will be called every time :warden is thrown from
# any strategy or hook.
module GDS
  module SSO
    class FailureApp < ActionController::Metal
      include ActionController::RackDelegation
      include ActionController::UrlFor
      include ActionController::Redirecting
      include ActionController::HttpAuthentication::Basic::ControllerMethods
      include Rails.application.routes.url_helpers

      def self.call(env)
        if ! ::GDS::SSO::ApiAccess.api_call?(env)
          action(:redirect).call(env)
        end
      end

      def redirect
        store_location!
        redirect_to '/auth/gds'
      end

      # Stores requested uri to redirect the user after signing in. We cannot use
      # scoped session provided by warden here, since the user is not authenticated
      # yet, but we still need to store the uri based on scope, so different scopes
      # would never use the same uri to redirect.

      # TOTALLY NOT DOING THE SCOPE THING. PROBABLY SHOULD.
      def store_location!
        session["return_to"] = env['warden.options'][:attempted_path] if request.get?
      end

    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
gds-sso-3.1.1 lib/gds-sso/failure_app.rb
gds-sso-3.1.0 lib/gds-sso/failure_app.rb
gds-sso-3.0.5 lib/gds-sso/failure_app.rb
gds-sso-3.0.4 lib/gds-sso/failure_app.rb
gds-sso-3.0.3 lib/gds-sso/failure_app.rb
gds-sso-3.0.2 lib/gds-sso/failure_app.rb
gds-sso-3.0.1 lib/gds-sso/failure_app.rb
gds-sso-3.0.0 lib/gds-sso/failure_app.rb
gds-sso-2.1.0 lib/gds-sso/failure_app.rb
gds-sso-2.0.1 lib/gds-sso/failure_app.rb
gds-sso-2.0.0 lib/gds-sso/failure_app.rb
gds-sso-1.2.2 lib/gds-sso/failure_app.rb
gds-sso-1.2.1 lib/gds-sso/failure_app.rb
gds-sso-1.2.0 lib/gds-sso/failure_app.rb
gds-sso-1.1.1 lib/gds-sso/failure_app.rb
gds-sso-1.1.0 lib/gds-sso/failure_app.rb
gds-sso-1.0.0 lib/gds-sso/failure_app.rb
gds-sso-0.8.0 lib/gds-sso/failure_app.rb
gds-sso-0.7.9 lib/gds-sso/failure_app.rb
gds-sso-0.7.8 lib/gds-sso/failure_app.rb