38 lines
849 B
Ruby
38 lines
849 B
Ruby
# frozen_string_literal: true
|
|
|
|
require 'base64'
|
|
require 'sinatra/base'
|
|
|
|
module InfisicalLicenseServer::API
|
|
class AuthV1 < Sinatra::Base
|
|
configure :development do
|
|
require 'sinatra/reloader'
|
|
register Sinatra::Reloader
|
|
end
|
|
|
|
enable :logging
|
|
|
|
post '/license-login' do
|
|
key = request.get_header('HTTP_X_API_KEY')
|
|
region = request.get_header('HTTP_X_REGION')
|
|
|
|
error 400, 'Missing API key' unless key
|
|
|
|
plan = InfisicalLicenseServer.config.plan_for key
|
|
error 401 unless plan
|
|
|
|
region = " (region #{region})" if region
|
|
logger.info "New auth for #{plan['plan']}#{region}"
|
|
|
|
{
|
|
token: Base64.strict_encode64(
|
|
{
|
|
auth: Time.now.to_i,
|
|
key: plan['key'],
|
|
plan: plan['plan']
|
|
}.to_json
|
|
)
|
|
}.to_json
|
|
end
|
|
end
|
|
end
|