Sha256: a9caed7fac8aa3630f3a92091ce878ec3cd5ba2fba86e50ac3beedf78a69e92f

Contents?: true

Size: 1.36 KB

Versions: 25

Compression:

Stored size: 1.36 KB

Contents

require 'aptible/auth'

module Aptible
  module CLI
    module Helpers
      module Token
        TOKEN_ENV_VAR = 'APTIBLE_ACCESS_TOKEN'.freeze

        def fetch_token
          @token ||= ENV[TOKEN_ENV_VAR] ||
                     current_token_hash[Aptible::Auth.configuration.root_url]
          return @token if @token
          raise Thor::Error, 'Could not read token: please run aptible login ' \
                             "or set #{TOKEN_ENV_VAR}"
        end

        def save_token(token)
          hash = current_token_hash.merge(
            Aptible::Auth.configuration.root_url => token
          )

          FileUtils.mkdir_p(File.dirname(token_file))

          File.open(token_file, 'w', 0o600) do |file|
            file.puts hash.to_json
          end
        rescue StandardError => e
          m = "Could not write token to #{token_file}: #{e}. " \
              'Check filesystem permissions.'
          raise Thor::Error, m
        end

        def current_token_hash
          # NOTE: older versions of the CLI did not properly create the
          # token_file with mode 600, which is why we update it when reading.
          File.chmod(0o600, token_file)
          JSON.parse(File.read(token_file))
        rescue
          {}
        end

        def token_file
          File.join ENV['HOME'], '.aptible', 'tokens.json'
        end
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
aptible-cli-0.18.2 lib/aptible/cli/helpers/token.rb
aptible-cli-0.18.1 lib/aptible/cli/helpers/token.rb
aptible-cli-0.18.0 lib/aptible/cli/helpers/token.rb
aptible-cli-0.17.2 lib/aptible/cli/helpers/token.rb
aptible-cli-0.17.1 lib/aptible/cli/helpers/token.rb
aptible-cli-0.17.0 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.9 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.8 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.7 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.6 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.5 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.4 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.3 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.2 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.1 lib/aptible/cli/helpers/token.rb
aptible-cli-0.16.0 lib/aptible/cli/helpers/token.rb
aptible-cli-0.15.2 lib/aptible/cli/helpers/token.rb
aptible-cli-0.15.1 lib/aptible/cli/helpers/token.rb
aptible-cli-0.15.0 lib/aptible/cli/helpers/token.rb
aptible-cli-0.14.1 lib/aptible/cli/helpers/token.rb