class GDS::SSO::FailureApp

Public Class Methods

call(env) click to toggle source
# File lib/gds-sso/failure_app.rb, line 18
def self.call(env)
  if GDS::SSO::ApiAccess.api_call?(env)
    action(:api_invalid_token).call(env)
  elsif GDS::SSO::Config.api_only
    action(:api_missing_token).call(env)
  else
    action(:redirect).call(env)
  end
end

Public Instance Methods

api_invalid_token() click to toggle source
# File lib/gds-sso/failure_app.rb, line 33
def api_invalid_token
  api_unauthorized("Bearer token does not appear to be valid", "invalid_token")
end
api_missing_token() click to toggle source
# File lib/gds-sso/failure_app.rb, line 37
def api_missing_token
  api_unauthorized("No bearer token was provided", "invalid_request")
end
redirect() click to toggle source
# File lib/gds-sso/failure_app.rb, line 28
def redirect
  store_location!
  redirect_to "/auth/gds"
end
store_location!() click to toggle source

TOTALLY NOT DOING THE SCOPE THING. PROBABLY SHOULD.

# File lib/gds-sso/failure_app.rb, line 47
def store_location!
  session["return_to"] = request.env["warden.options"][:attempted_path] if request.get?
end

Private Instance Methods

api_unauthorized(message, bearer_error) click to toggle source
# File lib/gds-sso/failure_app.rb, line 53
def api_unauthorized(message, bearer_error)
  headers["WWW-Authenticate"] = %(Bearer error="#{bearer_error}")
  render json: { message: }, status: :unauthorized
end