class HammerCLIForeman::Api::Oauth::PasswordGrant

Attributes

oidc_client_id[RW]
oidc_token_endpoint[RW]
password[RW]
token[RW]
user[RW]

Public Class Methods

new(oidc_token_endpoint, oidc_client_id, user, password) click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 9
def initialize(oidc_token_endpoint, oidc_client_id, user, password)
  @oidc_token_endpoint = oidc_token_endpoint
  @oidc_client_id = oidc_client_id
  @user = user
  @password = password
  super set_token(oidc_token_endpoint, oidc_client_id, user, password)
end

Public Instance Methods

authenticate(request, token) click to toggle source
Calls superclass method
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 17
def authenticate(request, token)
  if HammerCLI.interactive?
    set_token_interactively
  end
  super
end
error(ex) click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 41
def error(ex)
  if ex.is_a?(RestClient::InternalServerError)
    @user = @password = @oidc_token_endpoint = @oidc_client_id = nil
    original_message = _("Invalid credentials or oidc-client-id or oidc-token-endpoint.\n")
    begin
      message = JSON.parse(ex.response.body)['error']['message']
    rescue
    end
    UnauthorizedError.new(original_message << message)
  end
end
set_token(input_oidc_token_endpoint, input_oidc_client_id, input_user, input_password) click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 28
def set_token(input_oidc_token_endpoint, input_oidc_client_id, input_user, input_password)
  @oidc_token_endpoint = input_oidc_token_endpoint if input_oidc_token_endpoint
  @user = input_user
  @password = input_password
  @oidc_client_id = input_oidc_client_id if input_oidc_client_id
  if @user && @password && @oidc_token_endpoint && @oidc_client_id
    @token = HammerCLIForeman::OpenidConnect.new(
      @oidc_token_endpoint, @oidc_client_id).get_token(@user, @password)
  else
    @token = nil
  end
end
set_token_interactively() click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 24
def set_token_interactively
  @token ||= set_token(get_oidc_token_endpoint, get_oidc_client_id, get_user, get_password)
end

Private Instance Methods

ask_user(prompt, silent=false) click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 71
def ask_user(prompt, silent=false)
  if silent
    HammerCLI.interactive_output.ask(prompt) { |q| q.echo = false }
  else
    HammerCLI.interactive_output.ask(prompt)
  end
end
get_oidc_client_id() click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 67
def get_oidc_client_id
  @oidc_client_id ||= ask_user(_("Client ID:%s") % " ")
end
get_oidc_token_endpoint() click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 63
def get_oidc_token_endpoint
  @oidc_token_endpoint ||= ask_user(_("Openidc Provider Token Endpoint:%s") % " ")
end
get_password() click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 59
def get_password
  @password ||= ask_user(_("Password:%{wsp}") % {:wsp => " "}, true)
end
get_user() click to toggle source
# File lib/hammer_cli_foreman/api/oauth/password_grant.rb, line 55
def get_user
  @user ||= ask_user(_("Username:%s") % " ")
end