Class: Proxy::ContainerGateway::Api::AuthorizationHeader

Inherits:
Object
  • Object
show all
Extended by:
DependencyInjection
Defined in:
lib/smart_proxy_container_gateway/container_gateway_api.rb

Constant Summary collapse

UNAUTHORIZED_TOKEN =
'unauthorized'.freeze
UNAUTHENTICATED_TOKEN =
'unauthenticated'.freeze

Instance Method Summary collapse

Methods included from DependencyInjection

container_instance

Constructor Details

#initialize(value) ⇒ AuthorizationHeader

Returns a new instance of AuthorizationHeader.



425
426
427
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 425

def initialize(value)
  @value = value || ''
end

Instance Method Details

#basic_auth?Boolean

Returns:

  • (Boolean)


457
458
459
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 457

def basic_auth?
  @value.split(' ')[0] == 'Basic'
end

#blank?Boolean

Returns:

  • (Boolean)


461
462
463
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 461

def blank?
  Base64.decode64(@value.split(' ')[1]) == ':'
end

#present?Boolean

Returns:

  • (Boolean)


441
442
443
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 441

def present?
  !@value.nil? && @value != ""
end

#raw_headerObject



437
438
439
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 437

def raw_header
  @value
end

#token_auth?Boolean

Returns:

  • (Boolean)


453
454
455
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 453

def token_auth?
  @value.split(' ')[0] == 'Bearer'
end

#unauthenticated_token?Boolean

Returns:

  • (Boolean)


449
450
451
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 449

def unauthenticated_token?
  @value.split(' ')[1] == UNAUTHENTICATED_TOKEN
end

#unauthorized_token?Boolean

Returns:

  • (Boolean)


445
446
447
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 445

def unauthorized_token?
  @value.split(' ')[1] == UNAUTHORIZED_TOKEN
end

#userObject



429
430
431
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 429

def user
  container_gateway_main.token_user(@value.split(' ')[1])
end

#v1_foreman_authorized_usernameObject

A special case for the V1 API. Defer authentication to Foreman and return the username. ‘nil` if not authorized.



466
467
468
469
470
471
472
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 466

def v1_foreman_authorized_username
  username = Base64.decode64(@value.split(' ')[1]).split(':')[0]
  auth_response = ForemanApi.new.fetch_token(raw_header, { 'account' => username })
  return username if auth_response.code.to_i == 200 && (JSON.parse(auth_response.body)['token'] != 'unauthenticated')

  nil
end

#valid_user_token?Boolean

Returns:

  • (Boolean)


433
434
435
# File 'lib/smart_proxy_container_gateway/container_gateway_api.rb', line 433

def valid_user_token?
  token_auth? && container_gateway_main.valid_token?(@value.split(' ')[1])
end