rubygems/rubygems.org

View on GitHub
app/controllers/concerns/api_keyable.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module ApiKeyable
  extend ActiveSupport::Concern

  private

  def hashed_key(key)
    Digest::SHA256.hexdigest(key)
  end

  def generate_unique_rubygems_key
    loop do
      key = generate_rubygems_key
      return key if ApiKey.where(hashed_key: hashed_key(key)).empty?
    end
  end

  def generate_rubygems_key
    "rubygems_#{SecureRandom.hex(24)}"
  end

  def legacy_key_defaults
    legacy_scopes = ApiKey::API_SCOPES - ApiKey::EXCLUSIVE_SCOPES
    { scopes: legacy_scopes, name: "legacy-key" }
  end
end