class SkullIsland::Resources::BasicauthCredential

The BasicauthCredential resource class

@see docs.konghq.com/hub/kong-inc/basic-auth/ Basic-Auth API definition

Attributes

hashed_password[RW]

Public Class Methods

batch_import(data, verbose: false, test: false) click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 20
def self.batch_import(data, verbose: false, test: false)
  raise(Exceptions::InvalidArguments) unless data.is_a?(Array)

  known_ids = []

  data.each_with_index do |resource_data, index|
    resource = new
    resource.delayed_set(:username, resource_data)
    resource.delayed_set(:password, resource_data) if resource_data['password']
    resource.delayed_set(:consumer, resource_data)
    resource.import_update_or_skip(index: index, verbose: verbose, test: test)
    known_ids << resource.id
  end

  known_ids
end
relative_uri() click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 37
def self.relative_uri
  'basic-auths'
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 91
def <=>(other)
  if id
    if id < other.id
      -1
    elsif id > other.id
      1
    elsif id == other.id
      0
    else
      raise Exceptions::InvalidArguments
    end
  else
    digest <=> other.digest
  end
end
digest() click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 49
def digest
  Digest::MD5.hexdigest(
    if new? && !password.match?(/^hash{.+}$/)
      hashed_pass = Digest::SHA1.hexdigest((password || '') + consumer.id)
      "#{username}:hash{#{hashed_pass}}"
    else
      "#{username}:#{password}"
    end
  )
end
export(options = {}) click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 60
def export(options = {})
  hash = { 'username' => username, 'password' => password }
  hash['consumer'] = "<%= lookup :consumer, '#{consumer.username}' %>" if consumer
  [*options[:exclude]].each do |exclude|
    hash.delete(exclude.to_s)
  end
  [*options[:include]].each do |inc|
    hash[inc.to_s] = send(inc.to_sym)
  end
  hash.reject { |_, value| value.nil? }
end
modified_existing?() click to toggle source

Credentials can't be updated, only deleted then created

# File lib/skull_island/resources/basicauth_credential.rb, line 73
def modified_existing?
  return false unless new?

  # Find credentials of the same username
  basic_auths = consumer.credentials['basic-auth']
  return false unless basic_auths

  same_username = basic_auths.where(:username, username)

  existing = same_username.size == 1 ? same_username.first : nil
  # Need to destroy the old one then save the new one...
  existing ? existing.destroy && save : false
end
project() click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 87
def project
  consumer ? consumer.project : nil
end
relative_uri() click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 41
def relative_uri
  consumer ? "#{consumer.relative_uri}/basic-auth/#{id}" : nil
end
save_uri() click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 45
def save_uri
  consumer ? "#{consumer.relative_uri}/basic-auth" : nil
end

Private Instance Methods

postprocess_consumer(value) click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 109
def postprocess_consumer(value)
  if value.is_a?(Hash)
    Consumer.new(
      entity: value,
      lazy: true,
      tainted: false,
      api_client: api_client
    )
  else
    value
  end
end
postprocess_password(value) click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 130
def postprocess_password(value)
  hashed_password || !new? ? "hash{#{value}}" : value
end
preprocess_consumer(input) click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 122
def preprocess_consumer(input)
  if input.is_a?(Hash)
    input
  else
    { 'id' => input.id }
  end
end
preprocess_password(input) click to toggle source
# File lib/skull_island/resources/basicauth_credential.rb, line 134
def preprocess_password(input)
  if input.match?(/^hash{.+}$/)
    @hashed_password = true
    input.match(/^hash{(.+)}$/)[1]
  else
    input
  end
end
validate_consumer(value) click to toggle source

Used to validate {#consumer} on set

# File lib/skull_island/resources/basicauth_credential.rb, line 144
def validate_consumer(value)
  # allow either a Consumer object or a Hash
  value.is_a?(Consumer) || value.is_a?(Hash)
end
validate_password(value) click to toggle source

Used to validate {#password} on set

# File lib/skull_island/resources/basicauth_credential.rb, line 150
def validate_password(value)
  # allow a String
  value.is_a?(String)
end
validate_username(value) click to toggle source

Used to validate {#username} on set

# File lib/skull_island/resources/basicauth_credential.rb, line 156
def validate_username(value)
  # allow a String
  value.is_a?(String)
end