Module: BetterAuth::APIKey::Routes::GetAPIKey

Defined in:
lib/better_auth/api_key/routes/get_api_key.rb

Constant Summary collapse

UPSTREAM_SOURCE =
"upstream/packages/api-key/src/routes/get-api-key.ts"

Class Method Summary collapse

Class Method Details

.endpoint(config) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/better_auth/api_key/routes/get_api_key.rb', line 11

def endpoint(config)
  BetterAuth::Endpoint.new(path: "/api-key/get", method: "GET") do |ctx|
    session = BetterAuth::Routes.current_session(ctx)
    query = BetterAuth::Plugins.normalize_hash(ctx.query)
    resolved_config = BetterAuth::Plugins.api_key_resolve_config(ctx.context, config, query[:config_id])
    id = query[:id]
    record = BetterAuth::Plugins.api_key_find_by_id(ctx, id, resolved_config)
    unless record && BetterAuth::Plugins.api_key_config_id_matches?(BetterAuth::Plugins.api_key_record_config_id(record), resolved_config[:config_id])
      raise BetterAuth::APIError.new("NOT_FOUND", message: BetterAuth::Plugins::API_KEY_ERROR_CODES["KEY_NOT_FOUND"])
    end

    record_config = BetterAuth::Plugins.api_key_resolve_config(ctx.context, config, BetterAuth::Plugins.api_key_record_config_id(record))
    BetterAuth::Plugins.api_key_authorize_reference!(ctx, record_config, session[:user]["id"], BetterAuth::Plugins.api_key_record_reference_id(record), "read")

    record = BetterAuth::Plugins.(ctx, record, record_config)
    BetterAuth::Plugins.api_key_delete_expired(ctx.context, record_config)
    ctx.json(BetterAuth::Plugins.api_key_public(record, include_key_field: false))
  end
end