Class: Braintrust::Server::Auth::ClerkToken

Inherits:
Object
  • Object
show all
Defined in:
lib/braintrust/server/auth/clerk_token.rb

Overview

Validates Clerk JWT session tokens via the Braintrust app endpoint. The browser forwards the Clerk session token which is validated by POST /api/apikey/login on the app server.

Constant Summary collapse

DEFAULT_APP_URL =
"https://www.braintrust.dev"
RACK_AUTH_HEADER =
"HTTP_AUTHORIZATION"
RACK_ORG_NAME_HEADER =
"HTTP_X_BT_ORG_NAME"
BEARER_PATTERN =
/\ABearer (.+)\z/
LOGIN_PATH =
"/api/apikey/login"

Instance Method Summary collapse

Constructor Details

#initialize(app_url: nil) ⇒ ClerkToken

Returns a new instance of ClerkToken.



19
20
21
# File 'lib/braintrust/server/auth/clerk_token.rb', line 19

def initialize(app_url: nil)
  @app_url = app_url || DEFAULT_APP_URL
end

Instance Method Details

#authenticate(env) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/braintrust/server/auth/clerk_token.rb', line 23

def authenticate(env)
  token = extract_bearer_token(env)
  return nil unless token

   = validate_token(token)
  return nil unless 

  org_name = env[RACK_ORG_NAME_HEADER]

  {
    "api_key" => token,
    "org_id" => ["org_id"],
    "org_name" => org_name || ["org_name"],
    "app_url" => @app_url,
    "api_url" => ["api_url"] || @app_url
  }
end