# 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