Class: GDS::SSO::FailureApp

Inherits:
ActionController::Metal
  • Object
show all
Includes:
AbstractController::Rendering, ActionController::Redirecting, ActionController::Renderers, ActionController::Rendering
Defined in:
lib/gds-sso/failure_app.rb

Constant Summary collapse

MAX_RETURN_TO_PATH_SIZE =
2048

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.call(env) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/gds-sso/failure_app.rb', line 17

def self.call(env)
  if env["gds_sso.api_call"]
    if env["gds_sso.api_bearer_token_present"]
      action(:api_invalid_token).call(env)
    else
      action(:api_missing_token).call(env)
    end
  else
    action(:redirect).call(env)
  end
end

Instance Method Details

#api_invalid_tokenObject



34
35
36
# File 'lib/gds-sso/failure_app.rb', line 34

def api_invalid_token
  api_unauthorized("Bearer token does not appear to be valid", "invalid_token")
end

#api_missing_tokenObject



38
39
40
# File 'lib/gds-sso/failure_app.rb', line 38

def api_missing_token
  api_unauthorized("No bearer token was provided", "invalid_request")
end

#redirectObject



29
30
31
32
# File 'lib/gds-sso/failure_app.rb', line 29

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

#store_location!Object



42
43
44
45
46
47
48
49
# File 'lib/gds-sso/failure_app.rb', line 42

def store_location!
  return unless request.get?

  attempted_path = request.env["warden.options"][:attempted_path]
  return if attempted_path.bytesize > MAX_RETURN_TO_PATH_SIZE

  session["return_to"] = attempted_path
end