Sha256: 21fa644086bc7db821d7046f77da0f01723d2ae9e4fc15bea70ebebe6f3da947

Contents?: true

Size: 1.32 KB

Versions: 4

Compression:

Stored size: 1.32 KB

Contents

require 'highline/import'

module HammerCLIForeman
  module Api
    class InteractiveBasicAuth < ApipieBindings::Authenticators::BasicAuth
      def authenticate(request, args)
        if HammerCLI.interactive?
          get_user
          get_password
        end
        super
      end

      def error(ex)
        if ex.is_a?(RestClient::Unauthorized)
          self.clear
          return UnauthorizedError.new(_("Invalid username or password."))
        end
      end

      def status
        unless @user.nil? || @password.nil?
          _("Using configured credentials for user '%s'.") % @user
        else
          _("Credentials are not configured.")
        end
      end

      def user(ask=nil)
        @user ||= ask && get_user
      end

      def set_credentials(user, password)
        @user = user
        @password = password
      end

      def clear
        set_credentials(nil, nil)
      end

      private

      def get_user
        @user ||= ask_user(_("[Foreman] Username:%s") % " ")
      end

      def get_password
        @password ||= ask_user(_("[Foreman] Password for %{user}:%{wsp}") % {:user => @user, :wsp => " "}, true)
      end

      def ask_user(prompt, silent=false)
        if silent
          ask(prompt) {|q| q.echo = false}
        else
          ask(prompt)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hammer_cli_foreman-0.13.1 lib/hammer_cli_foreman/api/interactive_basic_auth.rb
hammer_cli_foreman-0.13.0 lib/hammer_cli_foreman/api/interactive_basic_auth.rb
hammer_cli_foreman-0.12.1 lib/hammer_cli_foreman/api/interactive_basic_auth.rb
hammer_cli_foreman-0.12.0 lib/hammer_cli_foreman/api/interactive_basic_auth.rb